Methoden dynamisch erstellen

Status
Nicht offen für weitere Antworten.

krey

Aktives Mitglied
Hi, ich wollte mal fragen ob folgendes möglich ist: (und wenn ja, dann wie)

Es gibt eine Collection mit X Elementen in einem Objekt.
{bla1,bla2,bla3,bla4}

Gibt es eine Möglichkeit dynamisch Mehtoden wie "getBla1()" usw zu erstellen?
Also nicht mit einer IDE sondern zur Laufzeit.

Und wenn die Methoden schon eine Funktionalität besitzen sollen?

Code:
public String getBla1() {
  bla1 = bla1*var_irgendwas;
  return bla1;
}

Kann man sich Gerüste für so etwas schreiben?
Ist es vieleicht möglich das mit der Reflection API umzusetzen?
 

krey

Aktives Mitglied
AlArenal hat gesagt.:
Nein, eine solche Möglichkeit gibt es nicht.
Wozu glaubst du das zu brauchen?

Um mir viel Schreibarbeit zu sparen und den Code nicht mit unzähligen gettern und settern aufzublasen.
Wenn Metoden im Programm vorhanden sein sollen (möglicherweise mit vorgefertigter Funktionalität) die nach der Notation get[Var]() ... sein sollen und man nicht direkt eine Collection mit Wertepaaren aus dem Objekt holen will. Alternativ ist es ja möglich eine get(String var) Methode zu schreiben, diese könnte dann eine Hashmap etc durchlaufen aber das wäre dann ja nichtmehr nach der Konention get[Var]() bzw set[Var]() ...
 

KSG9|sebastian

Top Contributor
ja, ich weiß nicht ob das wirklich ein guter "Tausch" ist..selbst wenn es irgendwie geht

10 Minuten Zeit gespart aber dafür absolut unleserlichen Code
 

AlArenal

Top Contributor
Also um für eine beliebige Anzahl von Member-Variablen Standard-Getter und -Setter zu erzeugen, brauche ich in Eclipse nur wenige Mausklicks. Ansonsten ist die Vererbung bisher immer mein Freund gewesen.

Wer sollte denn auch noch durch ein Programm durchblicken und es debuggen können, wenn man beliebig zur Laufzeit den Code überall ändern kann? Wenn ich mich recht entsinne, geht das in Smalltalk und Ruby... Mglw. kann man sowas auch mit Aspekt-Orientierung machen (allerdings, glaube ich, dann auch nicht erst zur Laufzeit), wäre dann nur die Frage, ob der Aufwand der Einarbeitung in ein entsprechendes Framework sich auszahlt.
 

krey

Aktives Mitglied
AlArenal hat gesagt.:
Also um für eine beliebige Anzahl von Member-Variablen Standard-Getter und -Setter zu erzeugen, brauche ich in Eclipse nur wenige Mausklicks. Ansonsten ist die Vererbung bisher immer mein Freund gewesen.

Wer sollte denn auch noch durch ein Programm durchblicken und es debuggen können, wenn man beliebig zur Laufzeit den Code überall ändern kann? Wenn ich mich recht entsinne, geht das in Smalltalk und Ruby... Mglw. kann man sowas auch mit Aspekt-Orientierung machen (allerdings, glaube ich, dann auch nicht erst zur Laufzeit), wäre dann nur die Frage, ob der Aufwand der Einarbeitung in ein entsprechendes Framework sich auszahlt.

Solch ein Framework zu schreiben und zu durchdenken dürfte doch kein großes Problem darstellen. In Scriptsprachen wie PHP, Perl und Tcl gibt es schon seit langem Möglichkeiten soetwas zu realisieren. Naja für Java gibt es jetzt ja auch eine BeanShell ;) Naja Scripten mit java? Nix ganzes und nix halbes. Wäre aber schön gewesen so ein Sprachelement gehabt zu haben. Außerdem ok in Eclipse geht das mit ein paar clicks... Aber naja wenn man ein einem Objekt mehrere hundert Attribute hat? Besonders der Gedanke der Gerüste für Klassen treibt mich.. Soetwas bietet Eclipse nicht, auf jeden Fall nicht soweit ich weiß...
 

AlArenal

Top Contributor
krey hat gesagt.:
Solch ein Framework zu schreiben und zu durchdenken dürfte doch kein großes Problem darstellen. In Scriptsprachen wie PHP, Perl und Tcl gibt es schon seit langem Möglichkeiten soetwas zu realisieren.

In Skriptsprachen ist es auch kein Problem dynamisch am Quellcode zu frickeln. Nur ist Java nunmal keine Skriptsprache. BTW. wäre mir auch nicht geläufig, wie man den Code eines Objekts in PHP zur Laufzeit ändern können sollte...

Naja für Java gibt es jetzt ja auch eine BeanShell ;) Naja Scripten mit java? Nix ganzes und nix halbes. Wäre aber schön gewesen so ein Sprachelement gehabt zu haben.

Und Groovy, und Jython und und und
Ich bin mir aber nicht sicher, ob man dort eine bereits existierende Klasse ändern kann, ohne Vererbung. Kann ich mir gerade nicht vorstellen, da die o.g. Skriptsprachen an die Möglichkeiten und Unmöglichkeiten des Java Bytecodes gebunden sind. Müsstest du dir ggf. mal deren Doku reinziehen.

Außerdem ok in Eclipse geht das mit ein paar clicks... Aber naja wenn man ein einem Objekt mehrere hundert Attribute hat?

Dann gehts auch mit Eclipse. Allerdings sollte man mit dem Code dann nicht hausieren gehen, sonst sterben um einen herum die Entwickler an Lachkrämpfen.. mehrere hundert Attribute... :lol:

Besonders der Gedanke der Gerüste für Klassen treibt mich.. Soetwas bietet Eclipse nicht, auf jeden Fall nicht soweit ich weiß...

Was Datenobjekte betrifft, gibts nen Arsch voll Frameworks im Bereich OR-Mapping, aber auch da wird nichts zur Laufzeut erzeugt, sondern im Vornherein die Struktur untersucht und dann ein Code-Gerüst ausgespuckt.
 
B

bygones

Gast
sorry, aber ein meiner Ansicht nach unsinniges Feature nur weil man damit 5 Minuten weniger zu schreiben hat einzubauen, dass den Code unleserlich macht und schwer verständlich.... nene
 

Murray

Top Contributor
Es gibt Möglichkeiten, eine Klasse vor dem Laden (also zur Laufzeit) "anzureichern", also z.B. neue Methoden hinzuzufügen. Dazu kann man z.B. ASM verwenden. Du willst hier ja aber noch mehr: wenn Getter für die Inhalte einer Collection angelegt werden sollen, dann geht das ja um Instanzdaten; verschiedene Instanzen der gleichen Klasse müssten dann unterschiedliche Methoden haben - das wird wohl nicht gehen.
 

krey

Aktives Mitglied
AlArenal hat gesagt.:
Was Datenobjekte betrifft, gibts nen Arsch voll Frameworks im Bereich OR-Mapping, aber auch da wird nichts zur Laufzeut erzeugt, sondern im Vornherein die Struktur untersucht und dann ein Code-Gerüst ausgespuckt.

Hört sich doch schonmal ganz gut an! Was sind denn das für Frameworks? Bzw welche großen bekannten gibt es und in welche lohnt es sich einzuarbeiten?
 

AlArenal

Top Contributor
Wie gesagt sind das Tools zum OR-Mapping. Die bringen die nur was, wenn du deine Daten in einer RDBMS hast. Hibernate und Castor sind denke ich mal aktuell die beiden bekanntesten freien Vertreter für Java.
 

gizmo

Bekanntes Mitglied
Weiss nicht ob das Thema noch aktuell ist... aber warum nimmst du nicht einfach eine HashMap?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Leere vererbte Interface-Methoden Allgemeine Java-Themen 8
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
Encera Unterschied zweier "toString"-Methoden Allgemeine Java-Themen 1
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
N abstracte klassen methoden Allgemeine Java-Themen 32
G Methoden für die Zukunft sinnvoll? Allgemeine Java-Themen 4
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
B Methoden Java Getter und Setter Methoden Allgemeine Java-Themen 9
Y Java Methoden unterschiedliche Zahlenreihen Allgemeine Java-Themen 2
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
D Methoden Methoden anpassen und fehlende Funktionen hinzufügen Allgemeine Java-Themen 475
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
R Statistische Methoden (Mathematik) Aufgabe Allgemeine Java-Themen 9
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
L mehrere Methoden Allgemeine Java-Themen 19
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
B StAX Parser - mehrere Methoden, ein XML Allgemeine Java-Themen 4
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
A Automatisches Methoden Laufzeiten logging? Allgemeine Java-Themen 7
M Quellcode von Java-Methoden Allgemeine Java-Themen 9
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
N HashMap und Methoden richtig einbinden Allgemeine Java-Themen 2
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
Q-bert Methoden Methoden in Java Allgemeine Java-Themen 13
D Methoden Java-Aufgabe Allgemeine Java-Themen 2
M Compiler-Fehler Methoden-Referenz Allgemeine Java-Themen 5
X Threads Externe Variablen in Run Methoden verändern Allgemeine Java-Themen 4
S 2 methoden mit gleichen namen und ein Interface Allgemeine Java-Themen 9
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
E OOP Objekte und Methoden Allgemeine Java-Themen 1
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
T Java Array in Methoden Allgemeine Java-Themen 1
D Code für bereitgestellte Methoden Allgemeine Java-Themen 1
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
A Methoden verändern Allgemeine Java-Themen 12
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
J Best Practice Testen von protected Methoden Allgemeine Java-Themen 7
L Methoden "Schiffe versenken" Quellcode in Methoden umwandeln Allgemeine Java-Themen 6
G Matrix reduzieren zwei Methoden Allgemeine Java-Themen 2
Sogomn Best Practice "Doppelte" Methoden Allgemeine Java-Themen 3
Paul15 String Methoden Allgemeine Java-Themen 7
G Methoden BMI -Wert Aufgabe(Methoden) Allgemeine Java-Themen 4
F Testen von Methoden Allgemeine Java-Themen 3
S "Vererben" statischer Felder/Methoden Allgemeine Java-Themen 4
F Methoden in der Enumeration Klasse Allgemeine Java-Themen 1
S Methoden ohne Methodenkopf ?! Allgemeine Java-Themen 5
T Überschreiben von Methoden Allgemeine Java-Themen 6
M Methoden werden in falscher Reihenfolge bearbeitet Allgemeine Java-Themen 10
S Methoden Methoden überschreiben Allgemeine Java-Themen 3
N Threads statische Methoden in Threads Allgemeine Java-Themen 5
O Java-Obfuscator, welcher einzelne Methoden, Klassen und Ordnerstrukturen ausnehmen kann. Allgemeine Java-Themen 1
A also definition von klassen und string methoden und algorithmik Allgemeine Java-Themen 13
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
A Threads Lock über mehrere Abschnitte in verschiedenen Methoden Allgemeine Java-Themen 5
S Methoden Frage Allgemeine Java-Themen 2
R Wie kann man diese Methoden in arrays etablieren? Allgemeine Java-Themen 8
M Methoden in Rescources speichern Allgemeine Java-Themen 4
G Synchronisation nicht statischer Methoden Allgemeine Java-Themen 4
A Vererbung finale Methoden überschreiben Allgemeine Java-Themen 24
A Methoden parallelisieren? Allgemeine Java-Themen 2
L Methoden methoden an generischen klassentyp anpassen Allgemeine Java-Themen 5
C Methoden Übernahme von standart nativen Methoden? Allgemeine Java-Themen 9
B Zusammenfassen verschiedener ähnlicher Methoden Allgemeine Java-Themen 8
K JNI: Methoden aus unterschiedlichen Threads aufrufen Allgemeine Java-Themen 3
P Unterschiedliche Clone- Methoden Allgemeine Java-Themen 5
MQue Spezialfrage Überschreiben von Methoden Allgemeine Java-Themen 14
B Methoden Alle Methoden und Variablen aus Java-Dateien auslesen. Allgemeine Java-Themen 7
MiMa Rekursive Methoden Allgemeine Java-Themen 3
S Programm das alle aufgerufenen Methoden ausgibt..? Allgemeine Java-Themen 6
F ListIterator (next & previous methoden) Allgemeine Java-Themen 5
W Frage zu Refactoring statischer Methoden Allgemeine Java-Themen 4
M Methoden/Klassen für andere Projekte Allgemeine Java-Themen 4
T Methoden per String-Namen aufrufen Allgemeine Java-Themen 2
C Kapselung Warum graift man auf Variablen nur über Methoden und nich direkt zu? Allgemeine Java-Themen 10
M Methoden Static Methoden und Thread??? Allgemeine Java-Themen 4
A Methoden ohne Referenzen finden Allgemeine Java-Themen 9
turmaline OOP zwei gleiche Methoden mit kleinen Unterschieden Allgemeine Java-Themen 15
G JUnit Test Methoden in anderen Thread verlagern Allgemeine Java-Themen 4
K Auf Methoden der Runnable Klasse zugreifen Allgemeine Java-Themen 2
S Methoden Class.forName() >> Methoden - Reihenfolge Allgemeine Java-Themen 5
D Passende Name für Methoden finden Allgemeine Java-Themen 3
D Wann sollte ich statische Methoden und Variablen benutzen? Allgemeine Java-Themen 44
A Methoden laufen im Konstruktor, außerhalb allerdings nicht Allgemeine Java-Themen 2
M Generische Methoden mit Java und globale Variablen Allgemeine Java-Themen 9
GianaSisters ArrayList in Methoden übergeben Allgemeine Java-Themen 3
S static methoden Allgemeine Java-Themen 9
J coole Methoden Allgemeine Java-Themen 6
R Methoden in einem Thread unterschiedlich oft ausführen Allgemeine Java-Themen 4
A OOP: Überschreiben/Implementierung von Methoden Allgemeine Java-Themen 5
P Methoden und Werte Allgemeine Java-Themen 17

Ähnliche Java Themen

Neue Themen


Oben