在Java中声明默认构造函数有什么意义吗?
class MyClass {
public MyClass(){}
public MyClass( T someArgs){
//somecode
}
}
Run Code Online (Sandbox Code Playgroud)
如果您有非默认构造函数,则默认构造函数不会隐式可用.如果你的目标不是让任何人做,那么不要放一个是个好主意:
MyClass myClass = new MyClass();
Run Code Online (Sandbox Code Playgroud)
如果您没有指定其他构造函数,Java会添加一个默认的public no-args构造函数,因此如果您需要一个构造函数,并且指定另一个构造函数,那么就有一个点.所以在你的情况下,如果你这样定义你的类:
class MyClass {
public MyClass( T someArgs){
//somecode
}
}
Run Code Online (Sandbox Code Playgroud)
然后你不能这样做:
MyClass a = new MyClass();
Run Code Online (Sandbox Code Playgroud)
但如果定义如下:
class MyClass {
// no constructors
}
Run Code Online (Sandbox Code Playgroud)
你可以.
通常,no-arg构造函数用于指定伪默认参数.例如:
class Switch {
private boolean on;
public Switch() { this(true); }
public Switch(boolean on) { this.on = on; }
public boolean isOn() { return on; }
public boolean toggle() { on = !on; }
public boolean set(boolean on) { this.on = on; return this.on; }
}
Run Code Online (Sandbox Code Playgroud)
是的,当你有其他构造函数时.
当您想要创建对象而不将任何参数传递给构造函数时,它是必需的.
在大多数情况下,它是反射所必需的,特别是当您使用某些基于反射的框架和库(例如序列化,Hibernate,Hessian)时.
通常使用setter可以为您提供更好的控制.它也适用于继承(在这里你需要为所有专用类显式调用构造函数,因为构造函数不是虚拟的.
| 归档时间: |
|
| 查看次数: |
1475 次 |
| 最近记录: |