Должен ли конструктор использовать все параметры, которые ему передаются? - PullRequest
1 голос
/ 02 мая 2011

Должен ли конструктор использовать все параметры, которые ему передаются?

Например: если передано три параметра для создания нового объекта, должны ли быть назначены все параметры?

Заранее спасибо!

Ответы [ 7 ]

4 голосов
/ 02 мая 2011

Технически нет - вам не нужно назначать все передаваемые параметры.

Но более важный вопрос - зачем передавать их на первое место, если они не используются?

UPDATE

Предположим, у вас есть этот класс: -

public final class SomeClazz {
    private final int foo;
    public SomeClazz(int foo,int bar){
        this.foo = foo;
    }
}

И вы вызываете это так: -

SomeClazz clazz = new SomeClazz(2,4);

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

2 голосов
/ 02 мая 2011

Конструктор, как и любой метод в Java, не должен использовать все свои параметры. Однако для вызова конструктора необходимо указать значения для всех объявленных параметров.

2 голосов
/ 02 мая 2011

В общем, нет.Но если вы принимаете параметр и ничего не делаете с ним, почему он там?Например:

class Foo {
    public Foo(int w, int h) {
        width = w;
        height = 10;
    }
    private int width;
    private int height;
}

В конструкторе h не используется.Его можно удалить из списка параметров конструктора.

1 голос
/ 02 мая 2011

Короткий ответ - нет. Конструктор, как и любой метод, не должен использовать все, что ему передано. Однако цель конструктора - «настроить» ваш объект, поэтому использование параметра кажется бессмысленным. Если вас беспокоит возможное использование параметра, перегрузите конструктор.

1 голос
/ 02 мая 2011

Конструктор не обязан использовать все параметры. Не использование всех параметров поднимает интересный вопрос, почему они все не используются В этом ответе предполагается, что вы имеете в виду, что не используете все переданные параметры.

0 голосов
/ 02 мая 2011

Это будет зависеть от дизайна классов, вот список возможных последствий:

1) конструктор аварийно завершит работу и выдаст исключение 2) конструктор не рухнет, но при вызове метода класса. 3) конструктор не потерпит крах, но вы не сможете назначить значение свойству, поскольку оно помечено как доступное только для чтения.

если вы являетесь владельцем класса, мой совет слишком перегружен конструкторами.

http://en.wikipedia.org/wiki/Function_overloading

0 голосов
/ 02 мая 2011

Конечно.В Java конструктор - это вызов метода, в конце концов;все параметры должны иметь значение.

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