我的 Java 程序中发生了这样的事情:
void f(Object o) {
g(o);
}
<T extends MySuperClass & MyInterface> void g(T x) {
...;
}
我怎样才能投射 o 以便它工作?如果不使用泛型,似乎无法在变量声明中同时指定基类和接口。我不认为泛型在这里可以工作,因为 o 是使用反射动态创建的,所以它的实际类在编译时是未知的。
(是的,我知道这是一件很奇怪的事情。但我确实需要超类和接口的功能。我想我可以在运行时使用 instanceof 进行所有类型检查,但这似乎是 Java 1.4...)