类型中的方法不适用于参数

时间:2012-12-15 02:09:40

标签: java object arguments processing

我在这里看了很多帖子,看不出我需要的解决方案......

我收到了错误:

the method initTimer(untitled.Object, String, int int) in the type untitled.TimerClass is not applicable for the arguments (untitled.Toon, String, int, int)

这让我发疯了。

    timers.initTimer(character, "regenAdd", 0,3);

以上行是抛出错误的行,以下是函数:

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);
}

提前感谢任何可以提供帮助的人:)

其他信息:

  

runState是一个布尔值,只是因为你猜不到   character是Toon类的一个实例;上面的方法是在   TimerClass类和'timers'是该类的一个实例。

2 个答案:

答案 0 :(得分:6)

错误消息

  

类型initTimer(untitled.Object, String, int int)中的方法untitled.TimerClass不是   适用于参数(untitled.Toon, String, int, int)

是由于untitled.Toon未延伸untitled.Object这一事实。它当然扩展了java.lang.Object,这就是为什么原因并不是源代码中显而易见的原因。

答案 1 :(得分:-1)

另外,另一个错误是initTimer(untitled.Object,String,int)被调用为(untitled.Toon,String,int,int) - 注意参数个数的差异 - 方法声明中的1个int和2个int在调用方法。

请记住也要纠正。