簡體   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