我在看一些Java代碼,並且有我經常看到的這段代碼。Foo.class它做了什麼?
Foo.class
這是用來表示類的類型?是類似於
Foo.GetType();
typeof(Foo);
in C#?
它用於什麼?它的意義是什麼?
我在看一些Java代碼,並且有我經常看到的這段代碼。Foo.class它做了什麼?
Foo.class
這是用來表示類的類型?是類似於
Foo.GetType();
typeof(Foo);
in C#?
它用於什麼?它的意義是什麼?
是的,Foo.class
在Java中相當於C#中的typeof(Foo)
。有關類文字的更多信息,請參閱section 15.8.2 of the JLS。
這不一樣上的參考,其獲取執行時間類型的對象的調用GetType()
。 Java的等價物是someReference.getClass()
。
您可能在Java代碼中比在C#中更頻繁地看到它的一個原因是與泛型有關。這不完全是稀奇事是這樣的:
public class Generic<T>
{
private final Class<T> clazz;
public Generic(Class<T> clazz)
{
this.clazz = clazz;
}
}
這使得執行時間訪問類反射等,這是隻在Java必要的,因爲類型擦除,泛型類型,其中一個對象可以通常在執行時決定它的類型參數。
真棒。謝謝。 – DarthVader
太棒了。我覺得它有點有趣,他們稱之爲clazz :) – DarthVader
@ user177883:那是一個約定。其他人可能會用不同的名字只是因爲'class'是一個關鍵字。 –
java中有特殊的類叫做類。它繼承對象。它的實例表示java運行時的類和接口,並且還表示枚舉,數組,原始Java類型(布爾型,字節型,char型,short型,int型,long型,float型,double型)以及關鍵字。當加載一個類時,或者JVM調用類加載器的defineClass()方法時,JVM將創建一個Class對象。
Java允許我們在很多方面創建一個類的相應Class對象, 和.class就是其中之一。 例如
Class c1 = String.class;
一些相關信息:'System.Type'是.Net中的一般類型,而不是特定於C#。我不知道JVM中的Class類型是否相同(與Java語言本身相反)。 –
很難找到來自Java的這條信息。我搜索了「C#類對象」,「C#引用類」以及許多不知道這一點的術語在C#中被稱爲「類型」 - 您將得到的唯一內容是OOP的教程和介紹。但是,謝謝你的問題:-) – Mitja