【发布时间】:2017-09-04 07:09:15
【问题描述】:
我知道泛型类型和通配符类型有什么区别, 但在这种情况下,我不能再用同样的方式来理解了。
简而言之,比较下面的两个接口
public interface RequestParser {
<T extends Entity> Message<T> parseRequest(String json);
}
public interface RequestParser {
Message<? extends Entity> parseRequest(String json);
}
只有第一个可以编译以下代码:(User extends Entity)
Message<User> message = requestParser.parseRequest(json);
使用通配符?不能成功。
那么在这种情况下它们之间究竟有什么区别......?
【问题讨论】:
-
在这种情况下,您想使用产生的值,因此它也是一个消费者(在副本中链接)
-
糟糕,PECS 这个词我以前从未听说过,谢谢。
标签: java generics polymorphism wildcard