簡體   English   中英

Foo.class它做了什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM