1 votes

Java : Exception d'argument illégal

Je reçois une IllegalArgumentException, mais je n'arrive pas à comprendre pourquoi.

La fonction à laquelle j'essaie d'accéder :

private static Player checkEvents(Player[] players, GameMaster bananas)

Le code problématique :

@Test
public void testCheckEvents() throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
    Game g = new Game();
    GameMaster gm = new GameMaster(4);
    Player[] p = new Player[] {new Player(gm), new Player(gm), new Player(gm), new Player(gm)};

    Method checkEvents = g.getClass().getDeclaredMethod("checkEvents", new Class[] {p.getClass(), GameMaster.class});
    checkEvents.setAccessible(true);

    checkEvents.invoke(p, gm); // échoue ici
}

L'échec :

testCheckEvents(nth.bananas.GameTest)
java.lang.IllegalArgumentException: mauvais nombre d'arguments

Qu'est-ce que je fais de mal?

4voto

hjhill Points 1434

Le premier argument de invoke doit être un objet sur lequel invoquer la méthode :

checkEvents.invoke(g, p, gm)

Étant donné que votre méthode est static, vous pouvez également utiliser null à la place de la référence d'objet g.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X