繁体   English   中英

在Java中获取私有类的对象

[英]Getting an object of a private class in 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()时,它是否只是一种好的软件工程,还是有一些更深层次的推理方法? ?

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

因此return new B().get(); new B()相同且等效。

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

public class B {

 private static B instance = null; 

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

    return instance;
  }    
} 

因此,无论我们调用getInstance()多少次,它都会返回相同的实例

基本上返回“ this”的方法是没有用的-应该调用该方法的代码已经引用了该对象

没有区别 因为当您创建一个new B() JVM将为该对象分配一个新的地址(例如:100001F),并且当您调用new B().get() ,它将返回相同的地址(100001F)。 如果仅返回new B() ,它将返回相同的地址(100001F)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM