2016-07-24 90 views
0

是否有方法可以指定多於一個接口的類型,並且在編譯時進行類型檢查?將變量聲明爲多個接口

例子:比方說,我有一個像

void method (Object o) { ... } 

的方法,但我想在編譯時限制o來實現的東西都java.lang.reflect.Memberjava.lang.reflect.AnnotatedElement(如ClassFieldMethod等) ,並且理想地訪問這兩個接口的方法而不鑄造o

在運行時有很多方法可以做到這一點,我只是特別好奇編譯時檢查。

+0

@mszymborski當然,但我不能修改現有的類(如'java.lang.reflect.Field')來實現它。 –

+4

你是不是指' void method(T o)'? –

+1

@SotiriosDelimanolis哇。我不知道你能做到這一點。這正是答案,你應該發佈它。謝謝! (對不起,resueman擊敗你!) –

回答

3

是的,你可以用泛型來做到這一點。定義你的方法是這樣的:

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

[哇,酷。](http://www.reactiongifs.com/r/2013/10/tim-and-eric-mind-blown.gif)謝謝! –