2016-07-24 8 views
0

複数のインタフェースを持つ型を指定し、コンパイル時に型チェックを行う方法はありますか?複数のインタフェースとして変数を宣言する

例:のは、私は

void method (Object o) { ... } 

のような方法があるとしましょう。しかし、私は実装して何かの両方java.lang.reflect.Memberjava.lang.reflect.AnnotatedElement(例えばClassFieldMethod、など)にコンパイル時にoを制限したいです理想的にはキャストなしで両方のインターフェイスのメソッドにアクセスします。o

実行時にこれを行う方法はたくさんありますが、私は特にコンパイル時のチェックについて興味があります。

+0

@mszymborski確かに、私はそれを実装するために(java.lang.reflect.Field'のような)既存のクラスを変更することはできません。 –

+4

' voidメソッド(T o)'を意味しますか? –

+1

@SotiriosDelimanolis Whoa。私はあなたがそれをすることができるとは考えていませんでした。それはまさに答えです。投稿する必要があります。ありがとう! (申し訳ありません、resuemanはあなたにそれを打ち負かしました!) –

答えて

3

はい、ジェネリックでこれを行うことができます。

<T extends Member & AnnotatedElement> void method (T o){ /* ... */ } 
+0

[Whoa、cool。](http://www.reactiongifs.com/r/2013/10/tim-and-eric-mind-blown.gif)ありがとう! –

関連する問題