繁体   English   中英

Java类类作为泛型无法正常工作

[英]Java Class class as a generic doesn't work as expected

关于类及其泛型语义的一个简单问题。 为什么以下代码不起作用?

Class<Serializable> s = String.class;

Java告诉我Class<Serializable>Class<String>不兼容。 String实现Serializable时,它们怎么可能?

泛型不应该完全允许这种类型的事情吗?

不,泛型明确不允许这种事情。 经典示例是某种收集类。 如果ArrayList<String>ArrayList<Serializable>的子类,则可以编写

ArrayList<String> astr = new ArrayList<String>();
ArrayList<Serializable> aser = astr;
aser.add(new Integer());
// This will throw ClassCastException!
String str = astr.get(0);

在此代码之后,您将拥有一个包含Integer对象的ArrayList <String>()-显然这不好。

因为Class<String>不是Class<Serializable> 但是Class<String>Class<? extends Serializable> Class<? extends Serializable>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM