我有以下代码:
public <T extends SomeObject> long doSomething(T someObject){
List<? extends SomeObject> l = new LinkedList<>();
l.add(someObject);
}
Run Code Online (Sandbox Code Playgroud)
这会导致编译错误 - 告诉我找不到合适的方法:add(T),为什么会这样?
如果l接受延伸的东西SomeObject不应该接受,someObject因为它必然延伸SomeObject?
Ade*_*ros 12
List<? extends SomeObject> l
Run Code Online (Sandbox Code Playgroud)
你是什么意思?当然会产生错误.
举个例子:SomeObject是的Fruit,你有2个派生类Apple和Orange
你的清单包含哪些内容?Apples还是Oranges?编译器无法分辨.所以它会产生错误.
如果您要更换 List<? extends SomeObject> l有List<SomeObject> l.那么这将是因为工作Apple和Orange均Fruit.