我正在看一些 Java 代码,我经常看到这段代码。
Foo.class
这是用来表示类的类型?是不是类似于
Foo.GetType();
typeof(Foo);
在 C# 中?
它的用途是什么?它的含义是什么?
最佳答案
是的,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 中是必需的,因此泛型类型的对象通常无法确定其类型参数执行时间。
关于c# - Foo.class 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7789924/