Java通过使用来自的返回值进行强制转换。getClass()
我想创建一个演员阵容,如下所示
class Animal {}
class Dog extends Animal { //Dog inherits Animal
public void print() {
System.out.println("Dog");
}
public static void main(String args[]){
Object d = new Dog();
System.out.println(d.getClass()); // "Dog"
((d.getClass()) d).print();
/**
* 4.253.25/Dog1.java:8: error: ')' expected
* ((d.getClass()) d).print();
* ^
* 4.253.25/Dog1.java:8: error: not a statement
* ((d.getClass()) d).print();
* ^
* 4.253.25/Dog1.java:8: error: illegal start of expression
* ((d.getClass()) d).print();
* ^
* 4.253.25/Dog1.java:8: error: ';' expected
* ((d.getClass()) d).print();
* ^
* 4 errors
**/
}
}
有没有一种可能的方法可以做到这一点,而不显式地说将其转换为Dog(我也显式地计算Dog的instanceof Dog),这实际上是可行的
# 1 楼答案
您可以简单地将对象强制转换为
Dog
并调用其print
方法如果要使用类元数据,则不能直接调用print,因为您在运行时获取类,因此在编译时编译器不知道对象
d
的实际类。因此,您必须在运行时使用reflection来调用该方法。这种调用方法的方式比在编译时调用慢(即,正常方式)# 2 楼答案
你不需要把你的东西扔给狗,把它扔给动物就足够了:
将打印