我对java不太熟悉,并且有一个小问题。
很多时候我看到以下代码:
public class A
{
private class B {
B() {
}
get() {
return this;
}
}
public B getB() {
return new B().get();
}
}
我的问题是,如果getB()只返回新的B()而不是新的B.get(),那有什么区别? 当你确实返回B()。get(),还是有更深层次的推理时,它只是一个好的软件工程吗?
答案 0 :(得分:1)
return this
返回B
的当前实例。在您的情况下,new B().get();
会返回B
的新实例(现在已创建)。
所以return new B().get();
和new B()
做同样的事情。
get()
方法或我会说我们可以在Singleton模式中使用getInstance()
方法,例如:
public class B {
private static B instance = null;
public static B getInstance(){
if(instance == null){
instance = new B();
}
return instance;
}
}
因此,无论我们调用getInstance()
多少次,它都会返回相同的实例
答案 1 :(得分:0)
基本上返回“this”的方法是没用的 - 应该调用此方法的代码已经引用了对象
答案 2 :(得分:0)
没有区别。因为当您创建new B()
时,JVM将为对象分配新的地址(例如:100001F),当您呼叫new B().get()
时,它将返回相同的地址(100001F)。如果您只是返回new B()
,它将返回相同的地址(100001F)。
我的特别观点:return new B()
是最好的选择,因为它分配对象并返回地址,而不是分配和以后的invoque get()
方法。