if I cache the methods in a HashMap<String, Method>, it's 40% slower than using getMethod, so sticking with getMethod is definitely the better solution.
This is hardly possible, maybe you've some other effects? microbenchmarks?
Since getMethod would do in the best case exactly the same, just look into a HashMap wether the method-object has already looked up - however since its thread-safe there would be even locking-overheads (even if uncontended), there is almost no chance for getMethod beeing faster.
lg Clemens