Archief - [PROG][JAVA] Adding methods dynamically

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

jodeman

Legacy Member
Heb eens een vraagje, stel u voor dat ge persoon gebruikt als klasse en ge houdt er bijvoorbeeld naam en voornaam in bij. Is er een mogelijkheid voor methodes dynamisch toe te voegen. Dat ge bijvoorbeeld telefoonnummer kunt toevoegen en dynamisch getters en setters bijvoegen? Ik weet dat ge klassen dynamisch kunt toevoegen, maar methodes heb ik nog niet gevonden.

Tassadar

Legacy Member
Er bestaat een java compiler aanroepbaar vanuit java programmas. Hiermee kun je dynamisch gegenereerde code compilen. Zie:
http://java.sun.com/javase/6/docs/a...ava.io.Writer, javax.tools.JavaFileObject...)

Een betere oplossing echter als je een veranderlijke lijst parameters wil bijhouden is werken met een lijst/hashtabel/Properties-klasse met zowel de naam als de waarde, en dan in 1 enkele getter en setter een extra parameter vragen met de naam van die variabele.
http://java.sun.com/javase/6/docs/api/java/util/Properties.html

killgore

Legacy Member
Bedoelde tijdens het ontwikkelen methodes toevoegen of at runtime?

int eerste geval hangt da af van de IDE dage gebruikt en niet java he :).

jodeman

Legacy Member
merci voor de reacties, die java compiler aanroepe lijkt me al een goei oplossing en dynabean moet ik wat over opzoeken.

.Acku.

Legacy Member
Dynamische Java compiler is de slechtst denkbare oplossing. Wil echt niet weten wat voor classloading, casting en persistentie/serialisatie issues dat later kan opleveren.

Gebruik gewoon een propertieset via een hashmap, of simpeler nog Properties als het enkel om Strings gaat http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html

Hashmap map = new Hashmap();

public void setObject(String name, Object obj) {
map.put(name, obj);
}

public Object getObject(String name) {
map.get(name);
}

//

String tel = "1246";
persoon1.setObject("telefoon",tel);
String tel = persoon1.getObject("telefoon");

jodeman

Legacy Member
das inderdaad wel een betere oplossing, das beter dan gewoon een klasse maken die gewoon data opslaagt. Merci!!!

.Acku.

Legacy Member
Jaja, maar ge moet niet alles zo gaan opslagen he. Argumentatie hierover is ingewikkeld maar komt erop neer dat als ge verwacht dat iets in een klasse zit ge het als apart veld maakt. Performantie zal zeker een issue zijn.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan