2011-05-05 46 views
2

我想問一下,如果在java中有反正確保一個類永遠不能實例化爲null。但我想在課堂內做到這一點。例如JAVA類空值

class A 
{ 
    I can never be null 
} 

class B 
{ 
    A a = null ; << No you cant. Does not compute :P 
} 

在此先感謝。

回答

7

這通常不是可能的。當你聲明:

A a = null; 
A a2 = new A(); 

兩個aa2引用,而不是實際的對象。將引用看作指針,但不支持C風格指針算術。

A a = null; 

設置了一個參考(指針),其可以指向類型A的對象,但當前初始化爲nullclass A確保不會有任何類型爲A的空引用。

7

2

號你不能做到這一點。你的用例是什麼,也許我們可以提出一個替代方案。

+0

A與我的案例有關的例子: class A {int size; 公共A(){大小= 0;} 公共無效添加(A A){大小= a.size +大小;}} 類B { 甲一個= NULL; A a = new A(); (a); } 希望它是有道理的。我認爲是不好的書面評論:P – tropicana 2011-05-05 21:53:23

+0

我想知道如果我可以在B得到編譯器錯誤,說A不能爲空。我的例子是A類,我寫B只是爲了說明不該發生什麼...... – tropicana 2011-05-05 21:58:46

0

我們經常談論一個空對象但這是完全誤導。一個對象是一個對象,只有一個變量可以保存值null(而不是對象的引用)。

類似於空對象根本不存在於Java中。

如果我們做一個

A a = new A(); 

我們創建的A一個新實例,並存儲在變量的引用(指針)到這個實例。變量值現在是這個新對象位置的某種地址。如果實例化失敗(拋出異常),則不會執行任何分配,並且該變量保持其舊值。這可能是null - 但是,這只是告訴我們該變量不包含任何對象的引用。