为什么Java允许你投射到一个集合中?
我有一个简单的类,我能够转换为集合接口(或),而不会出现任何编译器错误。请注意,类不实现任何接口或扩展任何其他类。foo
Map
List
Foo
public class Foo {
public List<String> getCollectionCast() {
return (List<String>) this; // No compiler error
}
public Map<String, String> getCollection2Cast() {
return (Map<String, String>) this; // No compiler error
}
public Other getCast() {
return (Other)this; // Incompatible types. Cannot cast Foo to Other
}
public static class Other {
// Just for casting demo
}
}
为什么当我尝试将类强制转换为集合时,Java 编译器不返回不兼容的类型错误?Foo
Foo
不实现 。我预计会出现不兼容的类型错误,因为给定当前的类签名,这不可能是.Collection
Foo
Collection