2012-07-28 74 views
2

我一直在使用C#很長一段時間,現在我需要在Java中做一些事情。Java-Do java有類似C#的結構自動構造函數

有沒有像C#中的結構自動構造函數的java?

我的意思是 在C#

​​

是否有可能迫使Java來在聲明中使用默認的構造函數?

+0

什麼用調用該構造函數明確的問題? – Qnan 2012-07-28 14:06:37

+0

C#不會自動調用結構上的默認構造函數。 – CodesInChaos 2012-07-28 14:25:31

+0

「自動構造函數被調用」不是*會發生什麼。 C#*也*沒有這個「自動構造函數」。 – 2012-07-28 15:18:47

回答

6

否 - Java根本不支持自定義值類型,並且始終顯式調用構造函數。

但是,您對C#的理解是不正確的。來自原文:

// Automatic constructor was invoked 
// This line is same as MyStruct mStruct = new MyStruct(); 
MyStruct mStruct; 

這是不正確的。你可以寫mStruct.i任何明確的初始化在這裏,但你不能從中讀取除非編譯器知道一切都已經賦值:

MyStruct x1; 
Console.WriteLine(x1.i); // Error: CS0170: Use of possibly unassigned field 'i' 

MyStruct x1 = new MyStruct(); 
Console.WriteLine(x1.i); // No error 
2

不,您總是需要在Java中顯式調用構造函數。

因爲可能有多個構造函數,所以明確調用一個特定的構造函數可能會是一個好習慣。