gpt4 book ai didi

java - 在子类中重新定义泛型类型

转载 作者:行者123 更新时间:2023-12-01 22:35:56 24 4
gpt4 key购买 nike

是否有一种方法可以扩展已定义泛型类型的类,但为子类中的类型提供新的定义?

abstract class A<T>{
abstract public void foo(T input);
}
class B extends A<Integer>{
public void foo(String input){ ...}

}
class C extends B<String>{
public void foo(String input){
//.. convert int to string
super.foo(Integer.valueof(input));
}
}

最佳答案

这是不可能的。

如果一个类是 B ,然后它提供 foo(Integer)方法。 C不这样做,因此不能用作 B .

尝试阅读字里行间,似乎您想要一些类似于 B 的东西,只不过它需要字符串而不是整数。在这种情况下,A是共同的纽带 - 你想要带有 foo 的东西任何类型的方法都是合适的。当您想要 B 的基于字符串的等效项时,您确实在寻找 A<String> ,和C可以完成这项工作。

一个简单的定义可能是:

class C extends A<String> {
private final B delegate; // Set up in constructor or whatever

public void foo(String input) {
//.. convert int to string
delegate.foo(Integer.valueof(input));
}
}

关于java - 在子类中重新定义泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26868431/

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