我刚刚意识到我一直在以下列方式初始化实例变量:
public class Service{
private Resource resource;
public Service(){
resource = new Resource();
//other stuff...
}
}
...我猜是因为习惯了。
我想知道这是否会导致实例化、编译或我没有意识到的任何差异,使用以下方法:
public class Service{
private Resource resource = new Resource();
public Service(){
//other stuff...
}
}
我确实意识到,如果您可能需要不同的“默认”值,则第一种方法具有优势,如下例所示:
public class Foo{
private String bar;
private SomeClass bar2;
public Foo(){
bar = "";
bar2 = new SomeClass();
//other stuff...
}
public Foo(String bar, SomeClass bar2){
this.bar = bar;
this.bar2 = bar2;
//other stuff...
}
}
对比
public class Foo{
private String bar = "";
private SomeClass bar2 = new SomeClass();
public Foo(){
//other stuff...
}
public Foo(String bar, SomeClass bar2){
this.bar = bar;
this.bar2 = bar2;
//other stuff...
}
}
...因为后者创建了变量的实例,如果调用参数化构造函数,这些实例将被丢弃,但这是一个更“复杂”的情况,这可能是我习惯了前一种初始化实例的方式的原因。
除了在真正重要的时候习惯其中一种方式之外,这两种方式还有什么优势吗?
翻翻过去那场雪
相关分类