我有一个以下成员的班级:
public class BaseContainer {
protected LinkedHashMap<Enum, MyClass> places;
}
我使用受保护成员的子类:
public class NullContainer extends BaseContainer {
public MyClass getSelectedPlace() {
return places.values().iterator().next();
}
}
我得到(在netbeans中):
错误:不兼容的类型
必需:MyClass
发现:对象
为什么我现在需要施法?类型信息怎么了?是因为继承而被删除了吗?我做错了什么。
然后似乎是我的java编译器中的一个错误。谢谢大家的帮助。
答案 0 :(得分:0)
所以最后我觉得我发现答案是jdk1.7.0_51中的一个错误(我正在使用它)。 https://bugs.openjdk.java.net/browse/JDK-8061736 但是有一些意见,这不是一个错误(见bugreport的结尾):
原始类型的超类(分别是超接口)是其任何参数化调用的超类(超接口)的擦除。因此GenList是原始类型,方法getAValue的返回类型不是A或String而是Object。这与javac的输出相对应。
(我真的认为这是一个错误,因为这实现了所有这一点,现在我被迫在所有子类中抛出这个成员字段的每一个出现,这没有任何意义......)