[英]Foo.class what does it do?
我正在查看一些Java代碼,我經常看到這些代碼。
Foo.class
這用於表示類的類型? 是那樣的
Foo.GetType();
typeof(Foo);
在C#?
它用於什么? 它的含義是什么?
是的,Java中的Foo.class
相當於C#中的typeof(Foo)
。 有關類文字的更多信息,請參見JLS的第15.8.2節 。
它不是與調用GetType()
上的參考,它獲取一個對象的執行時間的類型。 Java的等價物是someReference.getClass()
。
您可能在Java代碼中比在C#中更常見到的一個原因與泛型有關。 有這樣的東西並不完全是不尋常的:
public class Generic<T>
{
private final Class<T> clazz;
public Generic(Class<T> clazz)
{
this.clazz = clazz;
}
}
這允許對類的執行時訪問以進行反射等。由於類型擦除 ,這僅在Java中是必需的,因此泛型類型的對象通常不能在執行時確定其類型參數。
java中有一個叫做Class的特殊類。 它繼承了Object 。 它的實例表示java運行時中的類和接口,還表示枚舉,數組,原始Java類型(boolean,byte,char,short,int,long,float,double)和關鍵字void 。 當加載一個類,或者JVM調用類加載器的defineClass()方法時,JVM會創建一個Class對象。
Java允許我們以多種方式創建類的相應Class對象,而.class就是其中之一。 例如
Class c1 = String.class;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.