gpt4 book ai didi

java - 泛型中的嵌套扩展

转载 作者:搜寻专家 更新时间:2023-10-30 21:34:46 25 4
gpt4 key购买 nike

我有三个类(class):

class ClassR {}
class ClassA<T extends ClassR>{}
class ClassB<E extends ClassA<T extends ClassR>> extends ClassA<T> {
void foo(T param) {
}

void bar(E param) {
}
}

第三个类不编译,除非我把它改成

class ClassB<E extends ClassA<T>, T extends ClassR> extends ClassA<T> {
void foo(T bar) {
}

void bar(E param) {
}
}

有没有办法只保留创建 ClassB 时需要传递的 E 参数,并推断出 T?例如,使用起来会很方便:

new ClassB<ClassA<ClassR>>()

代替:

new ClassB<ClassA<ClassR>, ClassR>()

最佳答案

这种更简单的方法可能适合您:

class ClassR {}
class ClassA<T extends ClassR>{}

class ClassB<T extends ClassR> extends ClassA<T> {
void foo(T bar) {
}

void bar(ClassA<T> param) {
}
}

然后用法绕过对 ClassA 的任何引用,变成:

class SubR extends ClassR {}

ClassB<SubR> obj = new ClassB<SubR>();

关于java - 泛型中的嵌套扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31344504/

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