Ответ 1
Нет
Если нет смысла создавать экземпляр класса без предоставления какой-либо информации конструктору, то вам не нужно иметь конструктор с нулевым аргументом.
Хорошим примером является java.awt.Color класс, все аргументы которого указаны.
Должен ли каждый класс Java иметь конструктор с нулевым аргументом?
Нет
Если нет смысла создавать экземпляр класса без предоставления какой-либо информации конструктору, то вам не нужно иметь конструктор с нулевым аргументом.
Хорошим примером является java.awt.Color класс, все аргументы которого указаны.
Нет, нет смысла всегда создавать конструкторы нулевых аргументов, следующие сценарии являются примерами, когда имеет смысл предоставить конструктор по крайней мере a-some-argument-constructor
Случаи, в которых вы хотите иметь конструктор нулевого аргумента:
Один из ошибочных аргументов для конструктора с нулевым аргументом, на мой взгляд, является длинным списком аргументов. Для этого есть более эффективные решения, чем принятие инициализации объекта, который не находится в безопасном состоянии после создания:
Как уже отмечал Энди Томас-Крамер, это даже невозможно:
class NeedsToBeImmutable {
// For a class to be immutable, its reachable state
// MUST be reached through a final field
private final String stuff;
//!!Compile error!!
public NeedsToBeImmutable(){}
public NeedsToBeImmutable(String stuff){
this.stuff = stuff;
}
//getters...
}
Нет. Однако есть исключения. Например, если вы намереваетесь, чтобы ваш класс содержал только статические методы использования или один или один класс с просто константами, тогда вы должны создать частный конструктор без аргументов, чтобы предотвратить его явное создание.