Foo.class它做了什么?

Dar*_*der 9 c# java types class

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

Foo.class
Run Code Online (Sandbox Code Playgroud)

这用于表示类的类型?是那样的

Foo.GetType();
typeof(Foo);
Run Code Online (Sandbox Code Playgroud)

在C#?

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

Jon*_*eet 12

是的,Foo.class在Java中相当于typeof(Foo)在C#中.有关类文字的更多信息,请参见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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这允许对类的执行时访问以进行反射等.由于类型擦除,这仅在Java中是必需的,因此泛型类型的对象通常不能在执行时确定其类型参数.

  • @ user177883:嗯,这是一个惯例.其他人可能使用不同的名称 这只是因为`class`是一个关键字. (2认同)