2013-02-15 5 views
5

このために特別なクラスを宣言せずに特定のインタフェースを実装する特定のクラスと同じ時間でなければならないパラメータを持つメソッドを宣言するには?
私はクラスImageXを宣言しているとし、インターフェイスのタグ付けも宣言しているとします。ですから、Taggingインターフェースを実装するImageXのインスタンスのみを受け取らなければならない他のクラスやメソッドを作成する必要があります。どのようにそのような方法を宣言するのですか?メソッドのパラメータは特定のインタフェースを実装する特定のクラスのobjでなければなりません

private void someMethod (ImageX<Tagging> obj){} 

などですが、これはもちろん正しくありません。はい、私はそれが必要なインターフェイスを実装する場合objを確認することができますが、私はパラメータのチェックが欲しいです。そして、それが何らかの方法ではなくコンストラクタであれば...
おそらくジェネリックについて聞いていますか?

+1

ですから、 'Tagging'インターフェイス、および個別' ImageXを持つようにしたいです'Tagging'を実装していないクラスで、' ImageX'のインスタンスを受け入れるメソッドを持ちたいのですが、 'Tagging'も実装している場合のみですか?私はそれをしたいと思うことは、リファクタリングの必要性を示唆しているでしょう。 –

+0

はい、したいです。これはAndroidに関するもので、クラスは必要なインターフェースを実装するActivityです。しかし、すべてのアクティビティがそれを実行するとは限らず、私はそのためのアクティビティをサブクラス化したくありませんでした。 – Stan

+0

@ stan:私はそれを得る。幸運なことに、assyliasには答えがありました。 –

答えて

10

あなたは方法は、一般的な作りとだけ両方ImageXのとタイプの交差点を使用してタグ付けされているオブジェクトを受け入れることができます。

private <T extends ImageX & Tagging> void someMethod (T obj){} 
+0

+1 Niiii​​ice。私はそれを避けたいですが、それを持っていいです。誰もが実際にそれを見たいと思えば:http://pastie.org/6179036 –

+0

@ T.J.Crowderそれは質問に答えるが、あなたが指摘したように必ずしも最良のアプローチではない! – assylias

関連する問題