Java Object.getClass()方法的签名
类对象包含以下方法:Java Object.getClass()方法的签名,java,generics,Java,Generics,类对象包含以下方法: public final Class<? extends Object> getClass(). public final ClassgetClass()方法(通常)用于检查类是否属于特定类型 MyClass myClass1 = new MyClass(); MyClass myClass2 = new MyClass(); if (myClass.getClass().equals(myClass2.getClass()) { // do stuff
public final Class<? extends Object> getClass().
public final ClassgetClass()方法(通常)用于检查类是否属于特定类型
MyClass myClass1 = new MyClass();
MyClass myClass2 = new MyClass();
if (myClass.getClass().equals(myClass2.getClass())
{
// do stuff
}
返回类型是类对象,因为您可以将其与其他类对象进行比较。它扩展了对象,因为一切都扩展了Java中的对象
getClass()的另一个用途是使用getName(),以便
返回MyClass
它可以帮助您通过反射按字符串名称实例化类
string className = myClass1.getClass().getName();
MyClass newInstance = (MyClass) Class.forName(className).newInstance();
因为,泛型构造?扩展对象
匹配任何扩展对象的Java对象。因为Java中的所有内容都继承自对象,所以这与类路径上加载的所有内容都匹配。在本例中,不使用Class,因为Java缺少。(如果它有它们,那么返回类型将是Class,实际签名(至少在1.6中)是
这实际上是JDK 1.5中的一个错误。另请参见和。在一个螺母中,此签名导致以下代码段在应编译时未编译:
List l1=new ArrayList();
列表l2=新的ArrayList();
System.out.println(l1.getClass()==l2.getClass());//不兼容的类型?
他们在1.6中通过将返回类型改为而不是来修复它。使用myclass的myclass实例就足够了。
。我刚刚看过Jdk(1.6 update 20)实现,我看到getClass()方法返回一个类。就是这样。您的解释有助于理解Object的javadoc。\#getClass!是的,谢谢Dimitris:)我使用IDEA,当我要求从obj.getClass()创建一个变量时,它会自动创建一个ClassAh类型的变量,我只是添加了PS:以使其更清晰:)(顺便说一句,又是hello!)
string className = myClass1.getClass().getName();
MyClass newInstance = (MyClass) Class.forName(className).newInstance();
public final Class<?> getClass()
Class c = n.getClass(); //c now has no type information
List<String> l1 = new ArrayList<String>();
List<Integer> l2 = new ArrayList<Integer>();
System.out.println(l1.getClass() == l2.getClass()); // Incompatible types?