在java中获取私有类的对象

时间:2013-10-09 20:30:57

标签: java

我对java不太熟悉,并且有一个小问题。

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

public class A
{
   private class B {

       B() {
       }

       get() {
       return this;
       }
   }

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

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

3 个答案:

答案 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()方法。