Réflexions IllegalArgumentException causes

Mise à JOUR - de faire De la question plus claire.

Quelle est la cause possible d'obtenir une ClassCastException en appelant une méthode via réflexions?

J'ai eu la suivante stacktrace comme une partie de mon application, tout en essayant d'invoquer une méthode via réflexions.

java.lang.IllegalArgumentException: java.lang.ClassCastException@21fea1fv
    at sun.reflect.GeneratedMethodAccessor332.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com..... 
    (remaining is my method stack trace)

J'ai essayé un exemple de classe et adopté plusieurs arguments de types différents, mais je reçois toujours un cette exception.

java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)

Mise à JOUR -
Voici un exemple de code que j'ai écrit pour essayer de recréer l'exception

Interface pour créer de la classe proxy

package my.tests;

public interface ReflectionsInterface { 
    public abstract void doSomething();
}

C'est la classe de test

package my.tests;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class Reflections implements ReflectionsInterface {
public static void main(String[] args) {
Reflections reflections = new Reflections();
ReflectionsInterface reflectionsProxy = reflections.createProxy(ReflectionsInterface.class);
invokeMethod(reflectionsProxy, "doSomething", null);
}
public <T> T createProxy(Class<T> entityInterface) {
EntityInvocationHandler eih = new EntityInvocationHandler(this);
T cast = entityInterface.cast(Proxy.newProxyInstance(
entityInterface.getClassLoader(), new Class[]{entityInterface}, eih));
return cast;
}
public static void invokeMethod(Object obj, String methodName, Object... args) {
Method[] methods = obj.getClass().getMethods();
try {
for (Method method : methods) {
if (method.getName().equals(methodName)) {
method.invoke(obj, args);
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void doSomething() {
System.out.println("woo");
}
private final static class EntityInvocationHandler implements InvocationHandler,
ReflectionsInterface {
private Reflections reflectionObj;
public EntityInvocationHandler(Reflections reflectionObj) {
super();
this.reflectionObj = reflectionObj;
}
@Override
public void doSomething() {
reflectionObj.doSomething();
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object invoke = method.invoke(this, args);
return invoke;
}
}
}

Je suis incapable de comprendre la où je reçois argument de l'incompatibilité de type et la ClassCastException serait causé.
Je ne suis pas en mesure de re-créer l'exception et voudrais savoir pourquoi il vient. Tout travail code re-créé, ou une source de la référence au code de jeter cette exception dans ce cas sera bon

Je suis passé par la Method.class la documentation javadoc et le code source, je ne suis pas en mesure de comprendre pourquoi cette erreur vient.

Les récentes modifications apportées à votre code ont éliminé l'exception qui a été levée. Vous dites que vous obtenez toujours des erreurs, même avec cette nouvelle SSCCE? Si non, veuillez revenir à la précédente code qui fait illustre le problème que vous rencontrez.
L'erreur vient de mon code de l'application, ce qui est très élaborée et je ne peux pas poster ici. C'est mon essai (raté) de re-créer l'erreur ou à comprendre pourquoi il est à venir..

OriginalL'auteur gap_j | 2013-04-16