2015-03-31 41 views
0

它是確定如果程序是這樣寫的:實例化沒有變量聲明的對象是否有任何缺點?

class ReduceCode 
{ 
    void display() 
    { 
     System.out.print("Hello"); 
    } 
    public static void main(String[] X) 
    { 
     new ReduceCode().display(); 
    } 
} 

,而不是

class ReduceCode 
{ 
    void display() 
    { 
     System.out.print("Hello"); 
    } 
    public static void main(String[] X) 
    { 
     ReduceCode rc = new ReduceCode(); 
     rc.display(); 
    } 
} 

我理解具有與參照申報對象背後的原因,所以,如果有任何實例變量涉及,將來可以使用該引用訪問這些變量的值,但對於僅打印某些內容的方法(例如display()),引用可以被忽略。

除此之外,沒有參考的實例化有什麼缺點?我在官方網站上找不到任何文檔。這種技術是否在工業級使用?

+1

我個人發現隱式拋棄使用後的實例會產生更多可讀的代碼,因爲我知道它是該實例唯一相關的用法。 – Oli 2015-03-31 08:17:56

+0

沒有功能差異,所以它只是一個可讀性的問題,這是主觀的。 – assylias 2015-03-31 08:20:06

+0

只要它不誘惑像使用'{{...}} [初始化]這樣的技巧就可以了(http://stackoverflow.com/questions/29363254/double-brace-initialization-and-serialization/29363359#29363359)。 – 2015-03-31 08:32:42

回答

0

我知道以這種方式使用對象作爲可丟棄工具沒有任何缺點。我實際上建議,如果你不需要實例引用,最好使用這種方法。

我唯一能想到這種做法可能令人討厭的地方是調試時。你將沒有機會檢查創建的對象的細節。

Java 8中新的Streams系統使用這樣的流,它們通常只在表達式評估時短暫存在。

1

我發現的唯一缺點是在使用斷點進行調試時。在第二個示例中,您可以將鼠標懸停在Eclipse中的rc變量上並檢查它。

但這是一個小的代價:第一種方式更可讀,使對象的範圍更清晰。

相關問題