ジェネリックメソッドを含むDという1つのサポートクラスを作成したいというシナリオがあります。私は変数の型の上限を設定しました。型変数ジェネリック型を使用してメソッドを呼び出す
class A{
void show(){
System.out.println("Hello A");
}
}
class B extends A{
void msg(){
System.out.println("Hello B");
}
}
class C extends A{
void msg(){
System.out.println("Hello C");
}
}
class D{
<T extends A> void display(T ob){
ob.msg(); //here i want to do some tricks
}
}
まずは自分の目的を分かちたいです。ここで、BとCクラスのmsg()関数の実装は異なります。私はdisplayメソッドを使って1つの表示メソッドを持つDという1つのサポートクラスを作成したいと思います。インスタンス化に依存するB(または)のクラスのmsg()関数を呼び出したいと思います。どうすれば達成できるのか教えていただけますか?
ちょうどFYI、これらはメソッドであり、関数ではありません。 – gprathour
** ob instanceof B ** ||を確認することはできません。 ** ob instanceof C **?それともあなたが求めているものではないでしょうか? – ShayHaned
クラス 'A'は' msg'メソッドを持たず、サブクラスでのみ宣言します。だから、 'A'が抽象的である場合、抽象メソッドを追加します。そうでない場合は、空のメソッドを追加します(最初はうまくいかない...)。または、 'A'の' show'の名前を 'B'と' C'のメソッド名に一致するように変更します(同じでなければならない場合) – AxelH