Java 将变量声明为多个接口

Java 将变量声明为多个接口,java,variable-declaration,Java,Variable Declaration,有没有办法指定一个类型是多个接口,并在编译时进行类型检查 例如:假设我有一个方法 void method (Object o) { ... } 但是我想在编译时将o约束为同时实现java.lang.reflect.Member和java.lang.reflect.AnnotatedElement(例如Class,字段,方法)的东西,并在理想情况下访问这两个接口的方法,而无需强制转换o 在运行时有很多方法可以做到这一点,我只是特别好奇编译时检查 是的,你可以用泛型来做。如下定义您的方法: <

有没有办法指定一个类型是多个接口,并在编译时进行类型检查

例如:假设我有一个方法

void method (Object o) { ... }
但是我想在编译时将
o
约束为同时实现
java.lang.reflect.Member
java.lang.reflect.AnnotatedElement
(例如
Class
字段
方法
)的东西,并在理想情况下访问这两个接口的方法,而无需强制转换
o


在运行时有很多方法可以做到这一点,我只是特别好奇编译时检查

是的,你可以用泛型来做。如下定义您的方法:

<T extends Member & AnnotatedElement> void method (T o){ /* ... */ }
void方法(to){/*…*/}

是的,您可以使用泛型实现这一点。如下定义您的方法:

<T extends Member & AnnotatedElement> void method (T o){ /* ... */ }
void方法(to){/*…*/}

@mszymborski当然可以,但我不能修改现有类(如
java.lang.reflect.Field
)来实现它。你的意思是
void-method(to)
?@SotiriosDelimanolis哇。我不知道你能做到。这正是答案,你应该把它贴出来。谢谢(对不起,resueman抢先了你!)@mszymborski当然可以,但我不能修改现有类(如
java.lang.reflect.Field
)来实现它。你是说
void-method(to)
?@SotiriosDelimanolis哇。我不知道你能做到。这正是答案,你应该把它贴出来。谢谢(对不起,瑞斯曼抢先了你!)谢谢!谢谢