variablenname aus variable

  • hallo

    also erstens: das ist eine reine interessensfrage, ich wüsste atm keinen praktischen einsatz dafür.

    kann ich in Java eine variable deklarieren, und den variablennamen aus einer variable nehmen.

    also zb:
    String s=asdf;
    dann würde ich gerne eine variable zb int deklarieren, wobei ihr name aus s kommen sollte, also in diesem fall asdf


    ich hoffe es ist klar was ich meine

    mfg
    DeepB

  • atm kann man in java nicht den inhalt von variablennamen als variablennamen nehmen.
    hat mir zb beim erstellen von einer random menge buttons probleme bereitet. naja aber wie schon sauzachn gesagt hat, du kannst ja ne String variable name mit der Variable, die den Namen setzen soll belegen und ihr ein Objekt zuordnen

  • Kann mir bitte jemand erklären, welchen Vorteil man von variablen Variablennamen hat? Da geht doch jegliche Typsicherheit zur Compile-Zeit verloren...


    Java ist sowieso nicht typsicher :) Allein die Implementierung von Generizität...

    Aber du hast natürlich recht: Solche "Tricks" führen letztlich zu mehr Problemen als man ursprünglich hatte. Und man kann es ja auch - wie gesagt - über HashMaps lösen, das sollte relativ sicher sein.

    Dipper dipper dii dipper dii dipper dii duuu

  • Kann mir bitte jemand erklären, welchen Vorteil man von variablen Variablennamen hat?
    -- Stefan

    Mir faellt jetzt kein Grund ein, warum man lokale Variablennamen dynamisch erstellen sollte, aber durch Metaprogrammierung (Ueberbegriff) laesst sich oft sehr eleganter Code erzeugen.

    Im Webframework Ruby On Rails werden z.B. beim ActiveRecordPattern dynamisch Klassen anhand des Datenbankschemas aufgebaut. Also sagen wir Du hast eine Tabelle 'people' mit den feldern 'fullname' und 'age', dann kannst du schreiben:

    Code
    class Person < ActiveRecord::Base
    end

    und anschliessend haben dann Instanzen von 'Person' Zugriffsmethoden, um Records zu bearbeiten:

    Code
    person = Person.find_by_fullname "Max Mustermann"
    person.fullname = "Hansi Hinterseer"

    Das bedeutet, Du hast die Informationen der Feldnamen nicht redundant, sondern nur einmal vorliegen (naemlich in der Datenbank). Wenn Du das Schema aenderst, dann sind die Aenderungen automatisch auch im Code.

    Das ist nur ein Pattern und nicht immer sinnvoll (z.b. bei legacy Datenbanken). Aber es ist sehr populaer und nimmt oft eine ganze Menge Komplexitaet aus dem Code.

    Dann gibt es z.b. den Builder, mit dem man z.B. sehr elegant XML erstellen kann, indem die Methoden zur Laufzeit erstellen werden:

    http://builder.rubyforge.org/



    Da geht doch jegliche Typsicherheit zur Compile-Zeit verloren...


    Ja, aber wie stark dieser Nachteil sich in Relation zu den Vorteilen von dynamischen Typing auswirkt (weniger Code, lesbarere Konstrukte) ist alles andere als sicher und wird seit Jahrzehnten ausgiebig diskutiert. Ein klassisches Gegenargument ist z.B.: Wenn man Test-driven arbeitet, dann decken die Unittests ohnehin auch Typfehler schnell auf. Interessant sind hier auch Sprachen wie Haskell, die mit optionaler statischer Typisierung und Typeninferenz arbeiten.

  • In deinem Beispiel hätte ich den Weg bevorzugt, die Klasse Person anhand der Datenbank-Struktur generieren zu lassen und dann von dieser zu erben, um sie um eigene Methoden etc zu ergänzen... naja, Geschmackssache.

    -- Stefan

Jetzt mitmachen!

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