Как мне вызвать конструктор no arg после того, как я уже создал объект класса? - PullRequest
0 голосов
/ 15 февраля 2010

Я создаю объект класса:

Rectangle rec = new Rectangle(2,4);

Что дает мой прямоугольник и высоту 2 и ширину 4.

Но могу ли я в дальнейшем вызвать конструктор no arg в моем коде без создания нового объекта?

без этого:

Rectangle rec2 = new Rectangle();

Ответы [ 6 ]

2 голосов
/ 15 февраля 2010

Обычно это признак того, что вам нужно реорганизовать ваши конструкторы так, чтобы весь код, общий для двух или более конструкторов, содержался в отдельном (не конструкторном) методе.

1 голос
/ 15 февраля 2010

Конструкторы по определению создают новые объекты.

Если вам больше не нужен rec, вы можете сделать rec = new Rectangle(), если у Rectangle нет конструктора arg.

Или вы просто хотите заменить значения текущего прямоугольника? если это так, просто измените через сеттеры для создания метода для обновления обоих значений ...

0 голосов
/ 29 октября 2014

Вы абсолютно можете, вот как

public class Example {
    //no arg constructor
    public Example() {
        //your code
    }
    //constructor with argument
    public Example(String arg) {
       //call the no arg constructor
       this();
       //do something else
    }
}
0 голосов
/ 15 февраля 2010

Нет, вы можете вызвать только один конструктор.

Если вы хотите перезаписать координаты, вы можете использовать метод setBounds, например,

rec.setBounds(0,0,0,0);

Но если вы не разрабатываете игру для мобильного телефона, нет смысла повторно использовать старый прямоугольник, а создать новый проще.

0 голосов
/ 15 февраля 2010

Вы можете установить основные свойства вашего объекта в методе и вызывать этот метод в конструкторах

или

В вашем случае используйте rec = null; rec = new Rectangle (); // если вам не требуется Rectangle (2,4)

0 голосов
/ 15 февраля 2010

нет, вы не можете. Вы можете использовать отражение для создания нового объекта без использования нового ключевого слова, но я не уверен, вызывает ли он конструктор.

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