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哇。我不知道你能做到。这正是答案,你应该把它贴出来。谢谢(对不起,瑞斯曼抢先了你!)谢谢!谢谢