我知道泛型类型和通配符类型之间的区别,但是在这种情况下,我不能再次使用相同的方法来理解。
简而言之,比较下面的两个接口
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);
一个使用通配符 ?
不能成功。
那么,在这种情况下,他们之间到底有什么区别。。。?
1条答案
按热度按时间hec6srdp1#
是因为
Message<User>
不是的子类Message<? extends Entity>
.这个问题在尝试实施时会更加明显
RequestParser
.这将失败,没有一个演员,因为
T
不一定AnotherUser
:鉴于这将编译: