foo.class它是做什么的
本文关键字:什么 class foo | 更新日期: 2023-09-27 18:11:39
我正在看一些Java代码,这是我经常看到的代码。
Foo.class
这是用来指示类的类型?这和
类似吗?Foo.GetType();
typeof(Foo);
它被用来做什么?这是什么意思呢?
是的,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;