【发布时间】:2013-10-19 19:44:16
【问题描述】:
有效。
方法声明
<T> Session<T> start(Criteria<T> criteria, List<Property<T>> orders);
用法
Criteria<? extends Product> criteria = Utils.getCriteria();
Session<? extends Product> session = null;
session = Service.start(criteria, null);
它不起作用。
方法声明
<T> List<Session<T>> start(Criteria<T> criteria, List<Property<T>> orders)
用法
Criteria<? extends Product> criteria = Utils.getCriteria();
List<Session<? extends Product>> sessions = null;
sessions = Service.start(criteria, null);
错误信息
Type mismatch: cannot convert from List<Session<capture#2-of ? extends Product>> to List<Session<? extends Product>>
如果我将方法声明更改为此,它可以工作。
<T> List<Session<? extends T>> start(Criteria<? extends T> criteria, List<Property<? extends T>> orders)
为什么这个方法声明不起作用?
<T> List<Session<T>> start(Criteria<T> criteria, List<Property<T>> orders)
【问题讨论】:
-
您的方法声明是否与您的代码中的相同?
Criteria<? extends T>不能接受List<Criteria<? extends Product>>。 -
我的错,代码和我的不一样。我修改了代码。
-
你还需要出示
criteria的声明。 -
我修改了代码。
-
@JudgeMental 已经给出了问题的答案。你也可以去throughthese posts深入了解多级通配符的实际工作原理。
标签: java generics wildcard extends