Java 如何在子类对象上调用超类方法?
我有一个Java 如何在子类对象上调用超类方法?,java,generics,inheritance,compiler-errors,Java,Generics,Inheritance,Compiler Errors,我有一个MySuperClass,MySubClass和Main类 MySuperClass.java public abstract MySuperClass { String param; public String getParam() { return param; } } public class MySubClass extends MySuperClass { } public <T
MySuperClass
,MySubClass
和Main
类
MySuperClass.java
public abstract MySuperClass {
String param;
public String getParam() {
return param;
}
}
public class MySubClass extends MySuperClass {
}
public <T extends MySuperClass> void doWork (Class <T> subClassObject) {
subClassObject.getParam(); // method undefined
}
MySubClass.java
public abstract MySuperClass {
String param;
public String getParam() {
return param;
}
}
public class MySubClass extends MySuperClass {
}
public <T extends MySuperClass> void doWork (Class <T> subClassObject) {
subClassObject.getParam(); // method undefined
}
Main.java
public abstract MySuperClass {
String param;
public String getParam() {
return param;
}
}
public class MySubClass extends MySuperClass {
}
public <T extends MySuperClass> void doWork (Class <T> subClassObject) {
subClassObject.getParam(); // method undefined
}
publicsvoiddowork(类子类对象){
subassObject.getParam();//方法未定义
}
为什么??我指定了
T扩展MySuperClass
。因此,所有的MySuperClass
方法都应该适用于子类。如何从子类对象调用超类的方法 子类对象
不是一个MySuperClass
实例,它是一个实例。您应该将此参数定义为T
,而不是Class
,以获得所需的行为:
public <T extends MySuperClass> void doWork (T subClassObject) {
subClassObject.getParam();
// etc...
}
public void doWork(T子对象){
子对象getParam();
//等等。。。
}
您希望参数是类
还是T
?这些都是非常不同的事情。你把一个类和该类的一个实例搞混了。您只能在Class
上调用Class
的方法,我刚刚尝试了T
,结果成功了。我不知道t和t之间的区别,`Class
是一个Class
对象,它表示对象的类T
是类T
的一个实例,泛型实际上是不必要的,OP应该将该方法声明为public void doWork(MySuperClass SubassObject)
@newacct wow,出于某种原因完全误读了它。各种各样的隧道视觉;-)我将删除我的误导性评论。