我想問一下,如果在java中有反正確保一個類永遠不能實例化爲null。但我想在課堂內做到這一點。例如JAVA類空值
class A
{
I can never be null
}
class B
{
A a = null ; << No you cant. Does not compute :P
}
在此先感謝。
我想問一下,如果在java中有反正確保一個類永遠不能實例化爲null。但我想在課堂內做到這一點。例如JAVA類空值
class A
{
I can never be null
}
class B
{
A a = null ; << No you cant. Does not compute :P
}
在此先感謝。
這通常不是可能的。當你聲明:
A a = null;
A a2 = new A();
兩個a
和a2
是引用,而不是實際的對象。將引用看作指針,但不支持C風格指針算術。
A a = null;
設置了一個參考(指針),其可以指向類型A的對象,但當前初始化爲null
。 class A
確保不會有任何類型爲A
的空引用。
號
號你不能做到這一點。你的用例是什麼,也許我們可以提出一個替代方案。
我們經常談論一個空對象但這是完全誤導。一個對象是一個對象,只有一個變量可以保存值null
(而不是對象的引用)。
類似於空對象根本不存在於Java中。
如果我們做一個
A a = new A();
我們創建的A
一個新實例,並存儲在變量的引用(指針)到這個實例。變量值現在是這個新對象位置的某種地址。如果實例化失敗(拋出異常),則不會執行任何分配,並且該變量保持其舊值。這可能是null
- 但是,這只是告訴我們該變量不包含任何對象的引用。
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
我想知道如果我可以在B得到編譯器錯誤,說A不能爲空。我的例子是A類,我寫B只是爲了說明不該發生什麼...... – tropicana 2011-05-05 21:58:46