私はオブジェクトXとオブジェクトBを持っていると言います.Xはランダムクラスのオブジェクトで、Bを作成し、オブジェクトBの変数として格納されます。Java - 任意のオブジェクトに対してインタフェースメソッドを呼び出すことはできますか?
オブジェクトBは、それがどのクラスであるか知らずに、オブジェクトXでメソッドを実行する。
任意のオブジェクトでメソッドを呼び出すことは可能ですか?その名前のメソッドが存在する場合は実行し、そうでない場合は実行しません。私はtry/catchがその部分を回避することができると仮定します。それはあまりにもJavaを使用可能であるという考えを持っているので、これはインタフェースを持つことができました、
public class ObjectB {
public Object parentX;
public ObjectB(Object x) {
parentX = x;
}
public void anyMethod() {
x.runMyMethod();
}
}
私が一緒に働いていた別のプログラムでは、と:
しかし、私はこのような何かを持って言うことができます。しかし、私はこれを設定する方法を見つけることができないようです。だから、上記の場合、どのように設定され、ObjectBは私のプログラム内のすべてのクラスのメソッドを呼び出すことができます、それは私が望むものでしたか?
でメソッドを呼び出すことができるタイプ
MyIntf
の親にX 'をClass X
のオブジェクト(またはMyIntf
を実装するクラス)を割り当てることができますそのインタフェースを実装するクラスのインスタンスでなければなりません。 (そして、あなたは 'parentX'を意味しますか?) –いいえ、それを行う唯一の方法は反射を使用することですが、反射はほとんどの場合正しい答えではありません。あなたはおそらくあなたのデザインを修正することによってそれを行う必要があります。しかし、あなたが達成したいことが分かっていなくても、より高いレベルでは、答えにくいです。 –
'x'と' parentX'の型として 'Object'の代わりにインタフェースを使います。 –