Méthode dans le type n'est pas applicable pour les arguments
j'ai regardé à travers de nombreux messages sur ici et ne pouvait pas voir la solution que j'ai besoin...
J'obtiens le message d'erreur:
the method initTimer(untitled.Object, String, int int) in the type untitled.TimerClass is not applicable for the arguments (untitled.Toon, String, int, int)
et ça me rend fou.
timers.initTimer(character, "regenAdd", 0,3);
La ligne ci-dessus est celui de jeter l'erreur et celle-ci est la fonction:
public void initTimer(final Object obj, final String method, int delay, int period) {
delay*=1000;
period*=1000;
final Class<?> unknown = obj.getClass();
new Timer().schedule(new TimerTask() {
public void run() {
try {
//get the method from the class
Method whatToDo = unknown.getMethod(method, null);
try {
//invoke() the object method
whatToDo.invoke(obj);
} catch(Exception e) {
println("Exception encountered: " + e);
}
} catch(NoSuchMethodException e) {
println("Exception encountered: " + e);
}
runState = getTimerState();
if (!runState) {
println("timer dead");
this.cancel();
}
}
}
, delay, period);
}
Merci d'avance à toute personne qui peut vous aider avec ceci 🙂
Informations supplémentaires:
runState est un booléen juste au cas où vous ne pouvait pas le deviner et
un caractère est une instance de la Toon classe; la méthode ci-dessus est à l'intérieur
le TimerClass de classe et de "la vieille" est une instance de cette classe.
untitled.Object
c'est très mauvais choix pour un nom de classe. Vous devriez envisager de le renommer. Vous essayez de passer untitled.Toon
où untitled.Object
est prévu.Pouvez-vous poster le code qui est à l'origine de l'erreur? C'est à dire le code qui appelle cette méthode. Les types de variables d'être passé dans de trop
J'ai renommé
theGame
maintenant donc, peu importe où il est dit untitled
seront maintenant que. L'idée est de passer d'un objet inconnu à la fonction de sorte qu'il peut être utilisé pour plusieurs classes. @Bohème j'ai posté le code qui provoque l'erreur et a déclaré les types de variables =)Ne
untitled.Toon
étendre untitled.Object
?Merci beaucoup monsieur, votre question a résolu mon problème! Si vous le publiez, comme réponse, je peux l'accepter en elle =)
OriginalL'auteur PsychoMantis | 2012-12-15
Vous devez vous connecter pour publier un commentaire.
Le message d'erreur
est dû au fait que
untitled.Toon
ne s'étend pasuntitled.Object
. Il s'étendjava.lang.Object
bien sûr, c'est pourquoi la raison n'est pas immédiatement évident à partir du code source.OriginalL'auteur Daniel Fischer
Aussi, une autre erreur est de initTimer(sans titre.Objet, String, int) est appelé (sans titre.Toon, String, int, int) - notez la différence dans le nombre d'arguments - 1 int dans la déclaration de la méthode et 2 int dans l'appel de la méthode.
N'oubliez pas de corriger aussi.
int
paramètre pour#initTimer
.OriginalL'auteur Lalit