将变量声明为多个接口
Declaring a variable as more than one interface
有没有办法指定一个多于一个接口的类型,并在编译时进行类型检查?
示例:假设我有一个类似
的方法
void method (Object o) { ... }
但我想在编译时将 o
约束为同时实现 java.lang.reflect.Member
和 java.lang.reflect.AnnotatedElement
的东西(例如 Class
, Field
, Method
, 等), 并且无需强制转换即可理想地访问两个接口的方法 o
.
在 运行-time 有很多方法可以做到这一点,我只是对编译时检查特别感兴趣。
是的,您可以使用泛型来做到这一点。像这样定义你的方法:
<T extends Member & AnnotatedElement> void method (T o){ /* ... */ }
有没有办法指定一个多于一个接口的类型,并在编译时进行类型检查?
示例:假设我有一个类似
的方法void method (Object o) { ... }
但我想在编译时将 o
约束为同时实现 java.lang.reflect.Member
和 java.lang.reflect.AnnotatedElement
的东西(例如 Class
, Field
, Method
, 等), 并且无需强制转换即可理想地访问两个接口的方法 o
.
在 运行-time 有很多方法可以做到这一点,我只是对编译时检查特别感兴趣。
是的,您可以使用泛型来做到这一点。像这样定义你的方法:
<T extends Member & AnnotatedElement> void method (T o){ /* ... */ }