gpt4 book ai didi

Java:如何编写同时指定父类(super class)和接口(interface)的强制转换?

转载 作者:行者123 更新时间:2023-11-30 06:38:23 25 4
gpt4 key购买 nike

我的 Java 程序中发生了类似的事情:

void f(Object o) {
g(o);
}

<T extends MySuperClass & MyInterface> void g(T x) {
...;
}

我如何转换 o 才能使其有效?如果不使用泛型,似乎无法在变量声明中同时指定基类和接口(interface)。我认为泛型在这里不起作用,因为 o 是使用反射动态创建的,所以它的实际类在编译时是未知的。

(是的,我知道想要做的事情很奇怪。但实际上我确实需要来自父类(super class)和接口(interface)的功能。我想我可以在运行时使用 instanceof 进行所有类型检查,但这只是似乎是 Java 1.4...)

最佳答案

似乎没有办法调用“原始”通用方法。但是您可以创建原始类型的对象(以下转换显然是不安全的):

void f(Object o) {
Caster<?> c = new Caster();
g(c.cast(o));
}

class Caster<T extends MySuperClass & MyInterface> {
public T cast(Object o) {
return (T) o;
}
}

关于Java:如何编写同时指定父类(super class)和接口(interface)的强制转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com