今天我遇到了一个有趣的问题。考虑以下代码:
public static class Parent {}
public static class Child extends Parent {}
Set<Child> childs = new HashSet();
Set<Parent> parents = (Set<Parent>)childs; //Error: inconvertible types
Parent parent = (Parent)new Child(); //works?!
为什么这样的转换不起作用?我希望通过引入隐式转换规则来实现类型转换,但是为什么显式转换不起作用呢?请注意,这涉及到泛型的各种规则。
HashSet<Child>
,它可能是。 - ahmet alp balkanHashSet<Child>
在哪里? - Matt Ball