1

我对java不是很精通,有一个小问题。

很多时候我看到以下代码:

public class A
{
   private class B {

       B() {
       }

       get() {
       return this;
       }
   }

   public B getB() {
      return new B().get();
   }    
}

我的问题是,如果 getB() 只返回 new B() 而不是 new B.get() 有什么区别当你返回 B().get() 时它只是好的软件工程,还是有一些更深层次的推理?

4

3 回答 3

1

返回的return this当前实例B。在您的情况下,返回(立即创建)new B().get();的新实例。B

所以return new B().get();new B()做同样的和等价的。

get()方法或者我会说getInstance()我们可以在单例模式中使用的方法,例如:

public class B {

 private static B instance = null; 

  public static B getInstance(){
   if(instance == null){
       instance = new B();
    }

    return instance;
  }    
} 

所以无论我们调用多少次getInstance(),它都会返回同一个实例

于 2013-10-09T20:35:08.610 回答
0

基本上返回“this”的方法是无用的——应该调用这个方法的代码已经引用了该对象

于 2013-10-09T20:35:34.220 回答
0

没有区别。因为当你创建一个new B()JVM时会为对象分配一个新的地址(例如:100001F),而当你调用new B().get()它时会返回相同的地址(100001F)。如果您只是 return new B(),它将返回相同的地址(100001F)。

我的特别意见:return new B()是最好的选择,因为它分配对象并返回地址,而不是分配和后来的调用get()方法。

于 2013-10-09T20:47:26.077 回答