Methodennamme zusammenbasteln und aufrufen!

java777

Mitglied
Hallo Leute,

ich habe in einer Klasse Methoden definiert wie z.B.

Calculation00()
Calculation01() bis Calculation"n"() die ich aus einer anderen Klasse aufrufen möchte.

Aus der Datenbank erhalte ich die jeweilige Nummer als String wie zB "00","01" bis "n.te-Nummer".

nun will ich aus einer anderen Klasse die jeweilige Methode aufrufen.
Ich muss nun irgendwie den Methodenname definieren, dazu habe ich versucht
String z = "Calculation" + "00"= Calculation00 um eben Calculation00 zu erhalten, sodass ich
es mit einem objekt und dem String z beispielsweise

objekt.z(input) die Methode Calculation00 aufrufe

leider funktioniert dass nicht!

ich hoffe dass es verständlich genug ist

viele grüße
 
Das kannst Du über Reflection lösen.


(freestyle, nicht kompiliert)
Java:
public class Foo {

   int x;

   int doSomething() { return x*x; }
}

(...)main {
    Foo f = new Foo();
    f.x = 5;
    Method m = f.getClass().getMethod("doSomething");
    int i = (int) m.invoke(f);
}
 
vielen Dank für die Infos

ich bin noch relativ neu in Java daher habe ich deine Lösung nicht ganz verstanden
kannst du sie nochmal für dummies erklären eventuel mit meinen begriffen calculation usw.? Wäre echt super :)
HTML:

Ich teile dir die Klassen mit:

HTML:
public class Calculation(){
 
public Calculation(){
 
}
 
public boolean calculation00(int[] array){...return xyz;}
public boolean calculation01(int[] array){...return xyz;}
public boolean calculation02(int[] array){...return xyz;}
...
 
}
 
 
public class Action(){
 
public Action(){
}
 
// aus dieser Klasse möchte ich nun die calculation-Methoden aus der Klasse Calculation aufrufen
 
}

viele Grüße :)
 
(Freestyle)

Java:
public class Calculation(){
 
public Calculation(){
 
}
 
public boolean calculation00(int[] array){...return xyz;}
public boolean calculation01(int[] array){...return xyz;}
public boolean calculation02(int[] array){...return xyz;}
...
 
}
 
 
public class Action(){
 
public Action(){
}
 
public int foobar(String offset, int[] params) {

  Calculation c = new Calculation();
  Method m = c.getClass().getMethod("calculation"+offset, new Class []{params.getClass()});
  m.invoke(c,params);

}
 
}
 
Zuletzt bearbeitet:
danke für deine antwort,

ich versuche es die ganze zeit allerdings klapt es net.
der aufruf der methode soll in einem actionlistener erfolgen und getMethod wird nicht angenommen :S

ich weiss leider net weiter :S

viele Grüße
 
Hi Gorefest,

ich habe dich leider net verstanden, was meinst du mit "edit und typo usw." :)
habe erst vor paar tagen mit java begonnen, daher checke ich nicht gleich alles :(

gruß :)
 
war ein tippfehler ;-)

ich habe den codeblock oben korrigiert. wenn du eine Instanzvariable hast, dann musst du erst die Class holen, um getMethod rufen zu können.

Code:
Foo a = new Foo();

also entweder

Foo.class.getMethod(...)

oder 

a.getClass().getMethod(...);

aber net

a.getMethod(...);
 
es hat funktioniert :D huraaaaaaaaaaa :)
vielen vielen Dank :) aber eine kurze frage habe ich noch :D
und zwar liefert die aufgerufene Methode einen boolean den ich in der selben klasse aufrufen möchte :)
vlt dazu noch ein tipp?
danke danke :)
 
Einen boolean kann man nicht aufrufen. Du kannst aber eine Methode aufrufen, die einen Boolean zurückgibt.
Meinst du das?
Ich verstehe deine Frage nicht ganz...

[EDIT]
Wenn du den zurückgegebenen boolean in der Klasse speichern möchtest, definierst du am besten ein Array in der Klasse:
Java:
class Calculation{
  boolean bools[] = new boolean[100];
  public boolean calculation15(int[] array){
    boolean xyz = true;
    bools[15] = xyz;
    return xyz;
  }
}

[EDIT2]
Das geht ja mal gar nicht ;)
Java:
public class Calculation(){
 
Zuletzt bearbeitet:
Zurück