Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet?

MaggyMo

Aktives Mitglied
Guten Abend,

ich stehe vor dem Problem, dass ich eine Textdatei auslese und in Abhängigkeit davon Objekte erstellen muss. Es existieren die Klassen Vogel und Fisch.
Die Textdatei ist nach einem bestimmten Muster aufgebaut: Klassenbezeichner; Name; Gewicht
Abhängig von dem Klassenbezeichner muss eine Instanz vom dementsprechenden Objekt erstellt werden.
Beispiel:
Fisch;Hering;300
Vogel: Amsel; 500
Die Textdatei wird zeilenweise ausgelesen und pro Zeile wird ein Objekt erstellt. Ich bin jetzt an dem Punkt, dass ich den ersten Wert, z.B. "Fisch" in einer Variabeln (klassenname) gespeichert habe und aufgrunddessen gerne ein Objekt der Klasse Fisch erstellen möchte.

Dieser Weg funktioniert leider nicht:
klassenname f1 = new klassenname();

Kann mir da vllt jemand helfen?

Liebe Grüße:)
 

krgewb

Top Contributor
Java:
public Object createInstance(String name) throws Exception {
    Class c = Class.forName(name);
    return c.newInstance();
}

Name sei z.B. "java.util.Vector".

Ich teste es gerade...
 

mrBrown

Super-Moderator
Mitarbeiter
Für deinen Fall passender:

Java:
switch (klassenbezeichner) {
  case "Fisch":
    ... new Fisch(...);
  case "Vogel":
    ... new Vogel(...);
}



Java:
public Object createInstance(String name) throws Exception {
    Class c = Class.forName(name);
    return c.newInstance();
}

Name sei z.B. "java.util.Vector".

Ich teste es gerade...
"Anfänger-Themen" ;)
 

krgewb

Top Contributor
Ich habe meines getestet. Um If-Statements kommt man nicht herum. Außerdem muss gecastet werden, damit die Begrüßung ausgegeben werden kann.

Java:
public class Hauptprogramm {

    public static void main(String[] args) throws Exception {

        Object a = erstelle("Fisch", "Hering", 300);
        Object b = erstelle("Fisch", "Karpfen", 111);

        if (a instanceof Fisch) {
            System.out.println(((Fisch) a).holeBegruesssung());
            System.out.println("a ist ein Fisch");
        }

        System.out.println("a.getClass(): " + a.getClass());
        System.out.println("a.getClass().getSimpleName(): " + a.getClass().getSimpleName());
    }

    public static Object erstelle(String name, String s, int b) throws Exception {
        Class c = Class.forName(name);
        return c.newInstance();
    }

}
Java:
public class Fisch {

    public String holeBegruesssung() {
        return "blubb";
    }

}
Java:
public class Vogel {

    public String holeBegruesssung() {
        return "Tschirp, tschirp!";
    }

}
Ausgabe:
Code:
blubb
a ist ein Fisch
a.getClass(): class Fisch
a.getClass().getSimpleName(): Fisch
 
Zuletzt bearbeitet:

krgewb

Top Contributor
Hier noch ein Beispiel mit ArrayList (und switch):
Java:
import java.util.ArrayList;

public class Hauptprogramm {

    private static ArrayList<Fisch> fische = new ArrayList<>();
    private static ArrayList<Vogel> voegel = new ArrayList<>();

    public static void main(String[] args) {

        erstelle("Fisch", "Hering", 300);
        erstelle("Fisch", "Karpfen", 111);
        erstelle("Vogel", "Amsel", 4);

        System.out.println("Fische:");
        for (int i = 0; i < fische.size(); i++) {
            System.out.println("" + fische.get(i).art + "; " + fische.get(i).holeBegruesssung());
        }

        System.out.println("\nVögel:");
        for (int i = 0; i < voegel.size(); i++) {
            System.out.println("" + voegel.get(i).art + "; " + voegel.get(i).holeBegruesssung());
        }

    }

    public static void erstelle(String klassenbezeichner, String art, int b) {

        switch (klassenbezeichner) {
        case "Fisch":
            fische.add(new Fisch(art));
            break;
        case "Vogel":
            voegel.add(new Vogel(art));
            break;
        }
    }

}

Java:
public class Fisch {

    public String art;

    public Fisch(String art) {
        this.art = art;
    }

    public String holeBegruesssung() {
        return "blubb";
    }

}

Java:
public class Vogel {

    public String art;

    public Vogel(String art) {
        this.art = art;
    }

    public String holeBegruesssung() {
        return "Tschirp, tschirp!";
    }

}

Ausgabe:
Code:
Fische:
Hering; blubb
Karpfen; blubb

Vögel:
Amsel; Tschirp, tschirp!
 

MaggyMo

Aktives Mitglied
Guten Abend,

ich stehe vor dem Problem, dass ich eine Textdatei auslese und in Abhängigkeit davon Objekte erstellen muss. Es existieren die Klassen Vogel und Fisch.
Die Textdatei ist nach einem bestimmten Muster aufgebaut: Klassenbezeichner; Name; Gewicht
Abhängig von dem Klassenbezeichner muss eine Instanz vom dementsprechenden Objekt erstellt werden.
Beispiel:
Fisch;Hering;300
Vogel: Amsel; 500
Die Textdatei wird zeilenweise ausgelesen und pro Zeile wird ein Objekt erstellt. Ich bin jetzt an dem Punkt, dass ich den ersten Wert, z.B. "Fisch" in einer Variabeln (klassenname) gespeichert habe und aufgrunddessen gerne ein Objekt der Klasse Fisch erstellen möchte.

Dieser Weg funktioniert leider nicht:
klassenname f1 = new klassenname();

Kann mir da vllt jemand helfen?

Liebe Grüße:)

Guten Abend.

Ich bin nun mit dieser Aufgabe etwas weiter gekommen, aber stehe nun vor einem weiteren Problem. Quasi eine Erweiterung zu dieser Frage.
Ich habe nun eine Klasse namens Tier, von der die Klassen Fisch und Vogel erben. Die Objekte werden in einer ArrayList<Tier> gespeichert, damit ich die Objekte beider Klassen unter einen Hut bekomme. Leider kann ich an einer Stelle noch nicht auf die genaue Unterklasse referenzieren und erstelle somit erstmal ein Objekt der Klasse Tier und füge dieses meiner ArrayList hinzu. Im nächsten Schritt möchte ich dann dieses Objekt zu der Klasse Fisch casten. Kann mir dabei vllt auch jemand helfen? Oder soll ich dafür lieber eine neue(s) Frage/Thema erstellen?

Liebe Grüße und Danke im Voraus:)
 

LimDul

Top Contributor
Das geht nicht. Du kannst ein Objekt vom Typ Tier nicht auf einen Fisch casten.

Du kannst ein in einer Variable vom Typ Tier gespeichertes Objekt vom Typ Fisch wieder auf Fisch casten - aber kein Tier.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
Kirby.exe Generische Objekt Instanz erstellen Java Basics - Anfänger-Themen 14
H Objekt mit Methode erstellen Java Basics - Anfänger-Themen 6
B Mit methode Objekt aus anderer Klasse erstellen Java Basics - Anfänger-Themen 6
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
M Graphics2D Objekt mir der Maus erstellen Java Basics - Anfänger-Themen 5
V OOP Wozu Objekt erstellen? Java Basics - Anfänger-Themen 2
E Methoden Auf Methoden einer Klasse zugreifen, ohne ein Objekt zu erstellen Java Basics - Anfänger-Themen 2
W Objekt einer Unterklasse erstellen Java Basics - Anfänger-Themen 4
R Objekt erstellen - Attribute mit mehreren Werten Java Basics - Anfänger-Themen 1
L OOP Neues Objekt bei jeder Eingabe erstellen (Objekte speichern?) Java Basics - Anfänger-Themen 10
F Klassen für Objekt richtig erstellen Java Basics - Anfänger-Themen 8
C String Objekt erstellen auch ohne new() möglich? Java Basics - Anfänger-Themen 5
K Objekt erstellen - error: non-static variable this cannot be referenced from a static context Java Basics - Anfänger-Themen 17
R Objekt erstellen und speichern Java Basics - Anfänger-Themen 12
T objekt erstellen, set/get methoden Java Basics - Anfänger-Themen 16
B Klassen über Main Klasse in einer anderen Klasse ein Objekt erstellen Java Basics - Anfänger-Themen 5
E Compiler-Fehler kann Objekt-Referenz nicht erstellen Java Basics - Anfänger-Themen 3
H Ein Objekt erstellen Java Basics - Anfänger-Themen 12
L Aus einer String Variablen ein Objekt erstellen Java Basics - Anfänger-Themen 14
D aus einem einzeiligen String ein neues Objekt erstellen Java Basics - Anfänger-Themen 5
M Aufruf zum Objekt erstellen aus String Java Basics - Anfänger-Themen 5
M Neues Objekt erstellen Java Basics - Anfänger-Themen 3
E Objekt entweder erstellen oder erweitern Java Basics - Anfänger-Themen 4
D Neues Objekt in Methode erstellen möglich? Java Basics - Anfänger-Themen 5
Z objekt erstellen von canonical name einer klasse Java Basics - Anfänger-Themen 6
V objekt einer Klasse erstellen Java Basics - Anfänger-Themen 21
T File-Objekt aus getClass().getResource() erstellen? Java Basics - Anfänger-Themen 5
L objekt erstellen Java Basics - Anfänger-Themen 9
O Array-Objekt erstellen Java Basics - Anfänger-Themen 11
W Objekt-Namen aus Variablennamen erstellen Java Basics - Anfänger-Themen 7
P Objekt aus einem Class Objekt erstellen? Java Basics - Anfänger-Themen 10
A neues Objekt in main methode erstellen Java Basics - Anfänger-Themen 2
M Objekt erstellen Java Basics - Anfänger-Themen 8
K Array von einem eigenen Objekt erstellen Java Basics - Anfänger-Themen 5
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
Rxiiz Objekt aus ComboBox entfernen Java Basics - Anfänger-Themen 4
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
Say Objekt Java Basics - Anfänger-Themen 4
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
H Ein übergegebenes Objekt auf null setzen Java Basics - Anfänger-Themen 9
M BlueJ Objekt in Objektliste Java Basics - Anfänger-Themen 2
B Objekt in Klassendiagramm an fremdes Objekt weiterreichen? Java Basics - Anfänger-Themen 6
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
amelie123456 Objekt Farbe Quellcode Java Basics - Anfänger-Themen 4
M Objekt in einem Objekt speichern Java Basics - Anfänger-Themen 9
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
O Warum bekommen wir nicht die Referenz vom zurückgegebenen Objekt? Java Basics - Anfänger-Themen 4
K Ein Objekt Auto kennt den Inhalt seines links und rechtsstehenden Autos, wie soll man das ermöglichen Java Basics - Anfänger-Themen 2
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
melaniemueller Fernseher als Objekt Java Basics - Anfänger-Themen 9
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
Nina Pohl Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist Java Basics - Anfänger-Themen 6
B Objekt kopieren und sämtliche Referenzen von diesem Objekt? Java Basics - Anfänger-Themen 3
S JavaFX - Objekt an neue Stage übergeben Java Basics - Anfänger-Themen 12
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
P Objekt in mehreren Methoden verwenden. Java Basics - Anfänger-Themen 3
S Aufzurufendes Objekt Java Basics - Anfänger-Themen 3
CptK Überprüfen ob übergebenes Objekt zu Generics passt Java Basics - Anfänger-Themen 2
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
S Objekt aus Arraylist in andere Arraylist kopieren? Java Basics - Anfänger-Themen 2
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
C Arrays - deklarieren, initialisieren? Ist das ein Objekt? Java Basics - Anfänger-Themen 3
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
B Objekt von EJB in Controller (CDI) - Klasse füllen? Java Basics - Anfänger-Themen 3
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
N LocalTime einem Objekt zuweisen Java Basics - Anfänger-Themen 2
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
M ArrayList - Objekt kopieren und ändern Java Basics - Anfänger-Themen 11
L Objekt an Methode übergeben Java Basics - Anfänger-Themen 4
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
J Y-Koordinate von GUI-Objekt bestimmen Java Basics - Anfänger-Themen 2
M Auf erstelltes Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 5
H Referenz Objekt aufrufen Java Basics - Anfänger-Themen 12
M Objekt mit eindeutiger ID löschen, das nächste Objekt hat dann diese ID Java Basics - Anfänger-Themen 5
N Mit Objekt der Superklasse auf Methode der Subklasse zugreifen Java Basics - Anfänger-Themen 6
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
J Objekt bei Auswahl in jList ändern Java Basics - Anfänger-Themen 6
H Objekt aus einem Array löschen Java Basics - Anfänger-Themen 1
H Objekt im Array speichern Java Basics - Anfänger-Themen 2
H Objekt als Attribut speichern Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben