Lange Rede kurzer Sinn, ich kann nicht herausfinden, warum dieser Code nicht funktioniert.Verweise auf Variablen oder Methoden eines Objekts in einer ArrayList
import java.util.*;
class sup{
int a;
sup(){
a = 1;
}
}
class subB extends sup{
int b;
subB(){
b = 2;
}
}
class subC extends sup{
int c;
subC(){
c = 3;
}
}
public class runMain{
public static void main(String args[]){
List<Object> classes = new ArrayList<Object>();
classes.add(new sup());
classes.add(new subB());
classes.add(new subC());
System.out.println(classes.get(0).a); //should print 1
System.out.println(classes.get(1).b); //should print 2
System.out.println(classes.get(2).c); //should print 3
}
}
Wie im Kommentar erwähnt, ich die letzten 3 Zeilen bin zu wollen, um die Werte von a, b und c in den verschiedenen Klassen zu drucken. Wenn stattdessen z.B. System.out.println (Klassen.get (0)); es druckt [email protected]
, was ich nehme, ist nur der Klassenname "@" der Speicherort, so scheint alles andere im Programm als beabsichtigt zu arbeiten.
Ich weiß, warum sup @ 6d06d69c es Druck, wie ich in der angegebenen Text, das war nicht meine Frage. Ich frage, wie man eine bestimmte Variable, die Teil der Klasse ist, druckt oder darauf zugreift. – Dant
Mein schlechtes. Hier ist ein Betrüger für das, was Sie eigentlich fragen: https://stackoverflow.com/questions/4512312/access-subclass-fields-from-a-base-class-in-java Sie müssen den Wert auf seine werfen entsprechende Unterklasse. –
Das löst das Problem, wenn das Objekt nicht in einer ArrayList gespeichert wird, was ich vorher ausprobiert habe und gut funktioniert hat. Es ist nur so, dass die Referenzierung der Variablen eines Objekts in einer ArrayList nicht so funktioniert, wie es für mich zumindest in der Form, die ich in den ursprünglichen Codeblock eingefügt habe, intuitiv wäre. – Dant