Tomcat Method Signature Resolution

E

_ebm_

Aktives Mitglied
Thread Starter
Dabei seit
19.01.2008
Beiträge
2.079
Reaktionspunkte
204
Kleine Java/Tomcat-Frage:
In einer Applikation rufe ich eine statische Methode:
Code:
 public static <T extends Number> T getNumber(String str, Class<T> clazz, T value) {
    // simplified!!
    return value;
 }
mit:
Code:
 my.pkg.Helper.getNumber("foo", java.lang.Long.class, 1l );
Das funktioniert auch wunderbar

Wenn ich das jetzt in einem Tomcat mache, geht das nicht. Ich erhalte eine NoSuchMethod Exception, weil die VM eine Methode mit der Signatur "Object getNumber(String, Class, Object)" erwartet. Die gibt es ja nicht. Die Signatur nach dem Compilieren ist ja "Number getNumber(String, Class, Number)". Wenn ich also die Typangabe in der statischen Methode auf <T> abändere, geht es auch im Tomcat wieder, weil die Signatur dann wieder passt.

Wieso handhabt die VM das im Tomcat anders als in einer normalen Application? Oder anders: Wieso wird im Tomcat gleich auf Object zurückgeführt und nicht vorher noch auf Number?

Einer der Java-Gurus ne Idee? ;)
 
Zurück
Oben Unten