Dre*_*son 8 java generics class hierarchy
如果我有一个方法MyClass,如
setSuperClassList(List<Superclass>)
Run Code Online (Sandbox Code Playgroud)
......我应该能够这样做:
new MyClass().setSuperClassList(new ArrayList<Subclass>())
Run Code Online (Sandbox Code Playgroud)
看来这不会编译.为什么?
你只是在做泛型有点不对劲.添加该? extends位,这将允许传入的列表包含SuperClass或其任何子类.
setSuperClassList(List<? extends Superclass>)
Run Code Online (Sandbox Code Playgroud)
这称为设置泛型的上限.
声明List<Superclass>说List只能包含SuperClass.这排除了任何子类.