鉴于我们有以下类的方法:
class Fruit {}
class Orange extends Fruit {}
void process(Consumer<? extends Fruit> action) {}
void eatOnlyOranges(Orange evt) {}
编译时没有任何警告。
Consumer<Orange> consumer = this::eatOnlyOranges;
process(consumer);
我想允许这个,但它没有编译?
process(this::eatOnlyOranges);
我可以更改process(Consumer<? extends Fruit> action)
的签名以使其正常工作吗?
注意:请假设process(..)
的实施将检查给定的Consumer
是否可以处理给定的Fruit
。此详细信息与此问题无关。
答案 0 :(得分:1)
除了@ EmersonCod的回答,将方法签名更改为
<T extends Fruit> void process(Consumer< T > action) {
// ...
}
似乎可以胜任。
答案 1 :(得分:0)
您需要将RelativeLayout
转换为特定类型
ConstraintLayout