Я работаю с java-генериками и хочу избежать путаницы в заголовках классов.
// The car saves a generic list
class Car<L>{
ArrayList<L> exampleList=new ArrayList();
public void ArrayList<L> getExampleList(){
return exampleList;
}
}
class Mercedes extends Car<Engines> ...
class Porsche extends Car <Wheels>...
class Warehouse<T extends Car>{
T car;
// I want to work with a generic List here
public void useListFromCar(){
// This returns a simple ArrayList but not a ArrayList<L>
car.getExampleList();
}
}
Мне нужно иметь возможность работать с общим списком, а не только с ArrayList. Единственный известный мне способ решения этой проблемы приводит к путанице в заголовках моего класса. Также это будет избыточная информация в заголовке. Конкретный детский автомобиль уже знает тип Списка. Почему Склад должен знать об этом.
// Redundant and messy header :(
class Warehouse<L, T extends Car<L>>{
T car;
public void useListFromCar(){
// This returns the desired ArrayList<L>
car.getExampleList();
}
}
Я думаю, вы можете себе представить, что это становится совершенно неуправляемым с большими классами. Есть ли способ избежать этого?