foo.class它是做什么的

本文关键字:什么 class foo | 更新日期: 2023-09-27 18:11:39

我正在看一些Java代码,这是我经常看到的代码。

Foo.class

这是用来指示类的类型?这和

类似吗?
Foo.GetType();
typeof(Foo);

它被用来做什么?这是什么意思呢?

foo.class它是做什么的

是的,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 。它继承对象。它的实例代表了java运行时中的类和接口,也代表了enum、array、基本java类型(boolean、byte、char、short、int、long、float、double)和关键字void。当一个类被装入,或者JVM调用类装入器的defineClass()方法时,JVM创建一个class对象。

Java允许我们以多种方式创建一个类的对应的Class对象,class就是其中之一。例如

Class c1 = String.class;