Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Object.getClass()方法的签名_Java_Generics - Fatal编程技术网

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?