gpt4 book ai didi

Java泛型错误?

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

让我们有以下类层次结构:

public class MyType {
}

public class MySuperclass<T extends MyType> {
protected Map<String, String> myMap = new TreeMap<String, String>();
protected String myMethod(String s) {
return myMap.get(s);
}
}

public class MySubclass extends MySuperclass {
@Override
protected String myMethod(String s) {
return myMap.get(s); // <-- compilation error
}
}

为什么MySubclass的重写方法会出现编译错误?错误消息是“类型不匹配:无法从对象转换为字符串”。

有趣的是,如果我在 MySubclass 定义中为 MySuperclass 定义泛型类类型,编译错误就会消失:

public class MySubclass extends MySuperclass<MyType> {
@Override
protected String myMethod(String s) {
return myMap.get(s);
}
}

有人可以解释这种行为吗?我认为这是一个 Java 编译器错误。

我正在使用 jdk1.6.0_24。

最佳答案

这不是错误。通过扩展 MySuperclass而不是 MySuperclass<MyType> ,您正在扩展原始类型 MySuperclass ,这意味着 myMap也将是 Map 类型而不是 Map<String, String> .

关于Java泛型错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7767261/

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