将变量声明为多个接口

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){ /* ... */ }