Является ли конструктор единственным способом создания объекта класса в JAVA? - PullRequest
3 голосов
/ 24 апреля 2020

Если конструктор является единственным способом создания объекта класса, то как String name = "Java"; может создать объект класса String даже без использования конструктора.

Ответы [ 4 ]

7 голосов
/ 24 апреля 2020

Нет. Конструктор не единственный путь.

Есть как минимум еще два способа:

  1. Клонирование объекта
  2. Сериализация и затем десериализация объекта.

Хотя в случае с вашим примером - ни один из них не используется.

В этом случае Java использует пул строк

1 голос
/ 24 апреля 2020

Существует еще один способ создания объектов через

  • Class.forName("fully.qualified.class.name.here").newInstance()

  • Class.forName("fully.qualified.class.name.here").getConstuctor().newInstance()

но они вызывают конструктор под капотом.

Другие способы создания объектов клонируются с помощью метода clone() и десериализации.

0 голосов
/ 24 апреля 2020

Полагаю, что во всех oop -хороших типах вы также можете использовать объект класса:

// Get the class object using an object you already have   
Class<?> clazz = object.getClass();

// or get class object using the type
Class<?> clazz = Object.class;

// Get the constructor object (give arguments 
// of Class objects of types if the constructor takes arguments)
Constructor<?> constructor = clazz.getConstructor();

// then invoke it (and pass arguments if need be)
Object o = constructor.newInstance();

Я имею в виду, что вы все еще используете конструктор, поэтому он, вероятно, не имеет значения. Но, эй, оно есть!

Java do c ссылка для объекта Class

0 голосов
/ 24 апреля 2020

ДА, каждый раз, когда создается новый объект, будет вызываться хотя бы один конструктор.

Посмотрите на этот учебник , это объяснит все с помощью объектов, классов и конструкторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...