Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Die Methode "getDeclaredMethods()" gibt mir die Methoden leider nicht in der von mir festgelegten Reihenfolge, in der sie in der Klasse stehen, sondern in einer ganz anderen Reihenfolge. Wie kann ich das Problem lösen?
Wenn du also irgendwie eine Reihenfolge da reinbekommen willst wäre wohl die beste Möglichkeit jeder Methode über eine Annotation einen Sortierschlüssel anzufügen.
Java:
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD })
public @interface MethodSort {
public int value();
}
@TO
Und WARUM brauchst du eine bestimmte Reihenfolge ? Man kann doch durch das Array gehen (mit foreach) und dann über Method.getName() den Namen bekommen. Hat man mehrere Methoden mit dem selben Namen aber unterschiedlichen Parametern kann man diese entweder durch verschiedene andere Methoden von "Method" herrausbekommen oder sollte sich über Class.getDeclaredMethod(...) gleich die richtige besorgen.
Ich denke mal der Grund für die "Reihenfolge nach Source" ist das du dir den Aufwand sparen willst die richtige Methode aus dem Array zu suchen sondern lieber mit einem Index arbeiten würdest den du aus dem Source ableiten kannst. Da aber der Compiler noch so einiges optimiert und es auch unterschiedliche ClassLoader-Implementierungen gibt lass dir gesagt sein : vergiss es. Entweder hol dir gleich die richtige Methode oder gehe durchs Array. Auf Source-basis eine feste Reihenfolge festlegen dürfte entweder gar nicht oder nur mit extrem hohen Aufwand machbar sein. Zu mal das dann so krass Reflections wäre wie man es eigentlich gar nicht einsetzen sollte.
[ot]Klar macht die VM intern genau das selbe, aber man sollte es als Entwickler vermeiden so viel so krass mit Reflections rumzuspielen.[/ot]
Bin ja weis Gott nicht der Geek,
aber kann mir nicht vorstellen, dass eine Methode über einen Index aufgerufen, schneller/besser reagiert als über den Namen. Ich schreib meine Methoden so wies für mich wenig zum scrollen gibt, über die Folge oder eine evtl. Folge wie es abgerufen wird, hab ich mir noch nie Gedanken gemacht.
Zumal ich beim debuggen z.b. die Methoden effektiv in der Reihenfolge habe wie ich Sie aufrufe.