public class KlasaService extends KlasaAbstract{
public class KlasaTest implements KlasaInterfejs{
@Override
public void sprawdzaj(Obiekt1 obiekt1, Obiekt2 obiekt2, Obiekt3 obiekt3) {
}
}
@Override
protected List<KlasaInterfejs> tworzObiekt() {
return Arrays.asList(new KlasaTest()); //TUTAJ JEST BLAD KOMPILACJI
}
}
public interface KlasaInterfejs{
void sprawdzaj(Obiekt1 obiekt1, Obiekt2 obiekt2, Obiekt3 obiekt3);
}
public abstract class KlasaAbstract implements KlasaInterfejs{
private List<KlasaInterfejs> warunki;
@Override
public void sprawdzaj(Obiekt1 obiekt1, Obiekt2 obiekt2, Obiekt3 obiekt3) {
System.out.println("T");
}
protected abstract List<KlasaInterfejs> tworzObiekt();
}
Doszedłem do momentu gdzie pomogło rozwiązanie:
return Arrays.<KlasaInterfejs>asList(new KlasaTest());
Natomiast zastanawia mnie to czemu tak się dzieje i czemu musiałem to dopisać. Ponieważ jak dodam do parametrów asList dwa różne obiekty, które implementują interfejs to nagle Java wie jakiego to typu ma być - obiekt zwracany.
Dlaczego?