Когда у меня есть поле List<Foo>, оно станет равным List во время компиляции благодаря стиранию типа.
List<Foo>
List
Но что произойдет, если я использую
class FooList extends List<Foo>
? Является ли мой FooList списком Foo или списком Object во время компиляции?
FooList
Foo
Object
Важно позаботиться о некоторых моментах:
extends
implements
public abstract class FooList implements List<Foo>
Будьте осторожны с этим подходом, посмотрите этот код, используя свой FooList и используя простой список:
открытый класс Main {
public static void main(String[] args) { //works List<Foo> foos = new ArrayList<>(); //don't work FooList fooList = new ArrayList<>(); FooList fooList2 = new ArrayList(); //work, but not necessary FooList fooList3 = new FooList() { //implement all method from List interface }; }
}