1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Instanzieren einer Klasse über den Klassennamen

  • Blixa Barscheck
  • 3. Juni 2011 um 15:55
  • Unerledigt
  • Blixa Barscheck
    12
    Blixa Barscheck
    Mitglied
    Reaktionen
    11
    Punkte
    1.406
    Beiträge
    229
    • 3. Juni 2011 um 15:55
    • #1

    lassen sich Klassen auch über den Klassennamen instanzieren. Also in dieser Form:

    Code
    MyClass myClass = createNewInstance("MyClass");

    (ist natürlich ein sinnloses Beispiel. Soll auch nur verdeutlichen, was ich meine)

    "Von der Gewalt, die alle Wesen bindet, befreit der Mensch sich, der sich überwindet." > Learn more ...

  • Zaru
    8
    Zaru
    Mitglied
    Reaktionen
    12
    Punkte
    592
    Beiträge
    116
    • 3. Juni 2011 um 16:00
    • #2

    Das macht in der Form keinen Sinn, da du sowieso eine MyClass hast und genau weißt was da kommt.
    Meinst du vielleicht, dass der String der Name einer Subklasse von MyClass ist und du quasi "dynamisch" den richtigen (default-) Konstruktor aufrufst?

  • herrjohann
    2
    herrjohann
    Mitglied
    Punkte
    20
    Beiträge
    4
    • 3. Juni 2011 um 16:29
    • #3

    Das kannst du mit der Java Reflection API machen. (Refelection-API)http://download.oracle.com/javase/tutorial/reflect/

  • Blixa Barscheck
    12
    Blixa Barscheck
    Mitglied
    Reaktionen
    11
    Punkte
    1.406
    Beiträge
    229
    • 3. Juni 2011 um 17:25
    • #4
    Zitat von herrjohann

    Das kannst du mit der Java Reflection API machen. (Refelection-API)

    ok, das is schon einmal ein ganz guter Ratschlag. thx!

    Ich hab aber jetzt nicht die Zeit, mich genauer mit der API auseinanderzusetzen.

    Wenn jemand ein entsprechendes Code-Snippet posten könnte wäre mir damit geholfen, ansonsten bleibe ich bei dem bisherigen Workarround mit entsprechenden Fall-Unterscheidungen.

    "Von der Gewalt, die alle Wesen bindet, befreit der Mensch sich, der sich überwindet." > Learn more ...

  • Paulchen
    1
    Paulchen
    Gast
    • 3. Juni 2011 um 17:29
    • #5

    Du brauchst Class.forName() und Class.newInstance(). Sich damit auseinanderzusetzen sollte drin sein. :)

  • JohnFoo
    20
    JohnFoo
    Mitglied
    Reaktionen
    61
    Punkte
    4.231
    Beiträge
    761
    • 4. Juni 2011 um 11:19
    • #6
    Zitat von Blixa Barscheck

    lassen sich Klassen auch über den Klassennamen instanzieren. Also in dieser Form:

    Code
    MyClass myClass = createNewInstance("MyClass");


    Der Aufruf wirkt mir etwas widersprüchlich - createNewInstance müsste den Typ MyClass schon kennen, um überhaupt eine Instanz davon als Ergebnis zurück geben zu können. Was man eher machen würde, wäre eine Implementierung eines Interfaces zu instantiieren, z. B. Plugin plugin = createPlugin("PluginImpl").

    Was genau möchtest du machen? Geht es dir bei der Frage nur um die prinzipielle Machbarkeit, oder hast du ein konkretes Problem, das du so lösen möchtest?

    2 Mal editiert, zuletzt von JohnFoo (4. Juni 2011 um 12:00)

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung