2016-09-14 4 views
-2

私はサブクラスオブジェクトでスーパークラスメソッドを呼び出す方法は?

Main.java MySuperClassMySubClassMainクラス

MySuperClass.java

public abstract MySuperClass { 
    String param; 

    public String getParam() { 
     return param;     
    } 
} 

MySubClass.java

public class MySubClass extends MySuperClass { 
} 

を持っています

public <T extends MySuperClass> void doWork (Class <T> subClassObject) { subClassObject.getParam(); // method undefined } 

なぜですか?私はT extends MySuperClassを指定しました。したがって、すべてのMySuperClassメソッドは、サブクラスで動作するはずです。スーパークラスのメソッドをサブクラスオブジェクトから呼び出す方法は?

+3

:あなたが望む動作を取得するTとして、ないClass<T>として、このパラメータを定義する必要がありますか?それらは非常に異なるものです。 – resueman

+0

あなたはそのクラスのインスタンスとクラスを混同しています。 'Class'の' Class'メソッドを呼び出すことしかできません –

+0

'T'を試してみました。 TとT ' – john

答えて

4

subClassObjectMySuperClassインスタンスではなく、java.lang.Classインスタンスです。あなたはパラメータが ``クラス または 'T'になりたいか

public <T extends MySuperClass> void doWork (T subClassObject) { 
    subClassObject.getParam(); 
    // etc... 
} 
+0

ジェネリックは実際には不要で、OPはメソッドを宣言するだけです'public void doWork(MySuperClass subClassObject) 'として – newacct

+0

@newacct wowは何らかの理由で完全に誤読しています。種類のトンネルビジョン;-)私は誤解を招くようなコメントを削除します。 – Mureinik

関連する問題