Van egy tömb JAVA 8-ban
List<Elemek> list;
public class Elemek{
private final int id;
public Elemek(int id) {
this.id = id;
}
public int getId() {
return this.id;
}
}
public class A extends Elemek
{
private int valtozo_A;
public A(final int id, final int valtozo_A) {
super(id);
this.valtozo_A = valtozo_A;
}
public int getValtozo_A() {
return this.valtozo_A;
}
}
public class B extends A;
{
private int valtozo_B;
public B(final int id, final int valtozo_A, final int valtozo_B) {
super(id);
this.valtozo_A = valtozo_A;
this.valtozo_B = valtozo_B;
}
public int getValtozo_B() {
return this.valtozo_B;
}
}
List<Elemek> list = new ArrayList();
B b = new B(1, 2, 3);
list.add(b);
((B) list.get(0)).getValtozo_B(); // 3
Ha belerakom a tömbbe az A-t vagy a B-t, és kiolvasom,
akkor levágja az valtozo_A-t és a valtozo_B-t és az mindig null-t ad vissza:
(B) list.get(0);
Hogy lehet ezt megoldani?
Tényleg valamit interface-nek kell definiálni, de miért?
Nem tudom törölni a "final"-okat a konstruktorokból, mert az IntelliJ fejlesztőkörnyezet visszarakja őket.
Megoldódott végül. Nem ott volt a baj, hanem hiányzott valami teljesen más, avagy
jóval előtte egy kitöltetlen mező blokkolta, hogy eljusson oda, avagy nem levágta, hanem más volt a baj.
Végül nem kellett az interface.