Я пытаюсь реализовать этот код. Аренда - это подкласс Transaction.Параметр типа X скрывает тип X
import java.util.LinkedList;
public class TransactionList<Transaction> extends LinkedList { //TransactionList: warning: The type parameter Transaction is hiding the type Transaction
public TransactionList<Rent> getRentTransactions(){
TransactionList<Rent> rentList = new TransactionList<Rent>();
for(Transaction t : this){ //this: error: Type mismatch: cannot convert from element type Object to Transaction
if(t instanceof Rent){
t = (Rent) t; //this: warning: Type mismatch: cannot convert from Rent to Transaction
rentList.add((Rent) t);// whole statement: warning: Type safety: The method add(Object) belongs to the raw type LinkedList. References to generic type LinkedList<E> should be parameterized
}
}
return rentList;
}
Я действительно потерял с этим, я абсолютно уверен, что этот код типобезопасен в любой данный TransactionList всегда будет содержать сделки или подкласс сделки.
Однако, если я изменю для постановки на
for(Object t : this)
будет компилировать. Однако все объекты, хранящиеся в возвращаемом TransactionList, будут иметь тип Object и не могут быть отправлены в объекты Rent.
Да точно, извините за замешательство – nitowa