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,出于某种原因完全误读了它。各种各样的隧道视觉;-)我将删除我的误导性评论。