HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: java, цикл for, ветвление if-else, создание объекта через оператор new, reflection, клонирование, protected native object clone(), класс object, objectoutputstream, java.lang.object, области видимости переменных, protected, public, private, sun.reflect.magicaccessorimpl, magic accessor</p>
1 <p>Теги: java, цикл for, ветвление if-else, создание объекта через оператор new, reflection, клонирование, protected native object clone(), класс object, objectoutputstream, java.lang.object, области видимости переменных, protected, public, private, sun.reflect.magicaccessorimpl, magic accessor</p>
2 <p>В нашей программе курса<a>"Разработчик Java"</a>есть такая тема. Что такое основы Java думаем, понятно. Например, цикл<strong>for</strong>или ветвление<strong>if-else</strong>или создание объекта через оператор<strong>new</strong>.</p>
2 <p>В нашей программе курса<a>"Разработчик Java"</a>есть такая тема. Что такое основы Java думаем, понятно. Например, цикл<strong>for</strong>или ветвление<strong>if-else</strong>или создание объекта через оператор<strong>new</strong>.</p>
3 <h2>Как основы могут быть "углублёнными"?</h2>
3 <h2>Как основы могут быть "углублёнными"?</h2>
4 <p>Рассмотрим следующий базовый вопрос: как создать объект в Java? Первый и самый правильный ответ: через оператор<strong>new</strong>. Что может быть более базовым в объектно-ориентированном языке, чем</p>
4 <p>Рассмотрим следующий базовый вопрос: как создать объект в Java? Первый и самый правильный ответ: через оператор<strong>new</strong>. Что может быть более базовым в объектно-ориентированном языке, чем</p>
5 Object object = new Object();<p>Теперь усложним вопрос: как создать объект в Java без использования<strong>new</strong>? И на этот вопрос есть два ответа:<strong>Reflection</strong>и клонирование.</p>
5 Object object = new Object();<p>Теперь усложним вопрос: как создать объект в Java без использования<strong>new</strong>? И на этот вопрос есть два ответа:<strong>Reflection</strong>и клонирование.</p>
6 <p>Можно создать объект, если у вас есть объект класса<strong>Class&lt;Т&gt;</strong>этого класса:</p>
6 <p>Можно создать объект, если у вас есть объект класса<strong>Class&lt;Т&gt;</strong>этого класса:</p>
7 Object instance = Class.forName("java.lang.Object").newInstance();<p>То есть вы можете получить новый объект класса, зная только название этого класса (конечно, если объект типа<strong>Class&lt;T&gt;</strong>для этого класса может быть загружен класс-лоадером).</p>
7 Object instance = Class.forName("java.lang.Object").newInstance();<p>То есть вы можете получить новый объект класса, зная только название этого класса (конечно, если объект типа<strong>Class&lt;T&gt;</strong>для этого класса может быть загружен класс-лоадером).</p>
8 <p>Можно сделать класс<strong>Clonable</strong>и вызвать<strong>protected native Object clone()</strong>класса<strong>Object</strong>. В результате вы получите копию объекта, которую для вас сделает нативный метод.</p>
8 <p>Можно сделать класс<strong>Clonable</strong>и вызвать<strong>protected native Object clone()</strong>класса<strong>Object</strong>. В результате вы получите копию объекта, которую для вас сделает нативный метод.</p>
9 <h2>Хорошо, немного усложним задачу</h2>
9 <h2>Хорошо, немного усложним задачу</h2>
10 <p>Как создать объект в Java, не вызывая его конструктор? А кто сказал, что нельзя так сделать? Так работает<strong>ObjectOutputStream</strong>, когда десериализует объект. Вызывает</p>
10 <p>Как создать объект в Java, не вызывая его конструктор? А кто сказал, что нельзя так сделать? Так работает<strong>ObjectOutputStream</strong>, когда десериализует объект. Вызывает</p>
11 sun.reflect.ReflectionFactory.newConstructorForSerialization()<p>Фактически, создавая объект произвольного класса через вызов конструктора<strong>java.lang.Object</strong>.</p>
11 sun.reflect.ReflectionFactory.newConstructorForSerialization()<p>Фактически, создавая объект произвольного класса через вызов конструктора<strong>java.lang.Object</strong>.</p>
12 <p>Что ещё можно углублённо-базового рассмотреть? Вот, например, области видимости переменных:<strong>public</strong>,<strong>protected</strong>,<strong>private</strong>. Интересно, что о них можно углублённого рассказать? Посмотрите<strong>sun.reflect.MagicAccessorImpl</strong>. Да-да<strong>magic accessor</strong>!</p>
12 <p>Что ещё можно углублённо-базового рассмотреть? Вот, например, области видимости переменных:<strong>public</strong>,<strong>protected</strong>,<strong>private</strong>. Интересно, что о них можно углублённого рассказать? Посмотрите<strong>sun.reflect.MagicAccessorImpl</strong>. Да-да<strong>magic accessor</strong>!</p>
13 <p><em>Есть вопрос? Напишите в комментариях!</em></p>
13 <p><em>Есть вопрос? Напишите в комментариях!</em></p>
14  
14