voglio usareQualche soluzione per la riflessione e l'autoboxing di Class.getMethod()?
Class.getMethod(String name, Class... parameterTypes)
per trovare il metodo che ho bisogno di richiamare con i parametri indicati, ma a quanto pare come descritto nel Bug 6176992 Java non comprende autoboxing lì. Quindi se la mia classe riflessa ha un metodo con una firma (String, int), si ottiene comunque un NoSuchMethodException con un array {String.class, Integer.class} come un paremeter.
C'è qualche soluzione per questo? L'unico modo in cui potrei pensare di chiamare getMethod() con ogni permutazione di tipi primitivi e non primitivi che non voglio veramente fare.
Modifica: Per rendere più chiaro: sono ben consapevole delle classi di tipi primitivi, ma non vedo come potrebbero aiutare a risolvere il mio problema. Il mio array parameterTypes viene da qualche parte e so che restituirà solo tipi non primitivi. Non posso pensare che l'interfaccia sarà dichiarato solo con i tipi primitivi e questo è esattamente il mio problema:
public interface TestInterface()
{
public void doTest(Integer i1, int i2, double d3, Double d);
}
Class<?>[] classes = { Integer.class, Integer.class, Double.class, Double.class }
// Due to autoboxing I should become the doTest method here, but it doesn't work
TestInterface.class.getMethod("doTest", classes);
Sai qual è la firma del metodo in anticipo? – PSpeed
No, non proprio. Bene, un'altra soluzione sarebbe quella di ottenere tutti i metodi con quel nome e verificare se la firma corrispondesse ai tipi (un) in scatola. – Daff