Foo.class它做了什么?

时间:2011-10-17 06:05:29

标签: c# java class types

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

Foo.class

这用于表示类的类型?与

类似
Foo.GetType();
typeof(Foo);
在C#中

它用于什么?它的含义是什么?

2 个答案:

答案 0 :(得分:12)

是的,Java中的Foo.class相当于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中是必需的,因此泛型类型的对象通常无法确定其类型参数。执行时间。

答案 1 :(得分:2)

java中有一个名为 Class 的特殊类。它继承了 Object 。它的实例表示java运行时中的类和接口,还表示枚举,数组,原始Java类型(boolean,byte,char,short,int,long,float,double)和关键字 void 。当加载一个类,或者JVM调用类加载器的defineClass()方法时,JVM会创建一个Class对象。

Java允许我们以多种方式创建类的相应Class对象, 和.class就是其中之一。 e.g。

Class c1 = String.class;