使用面向对象获取覆盖方法中的值

时间:2012-10-23 02:07:49

标签: java oop

这是扩展CountDownTimer的类。

public class timer extends CountDownTimer{

private final long startTime = 50000;
private final long interval = 1000;
int timeElapsed;

public timer(long starttime, long interval){
    super(starttime, interval);     
}

@Override
public void onFinish() {        

}

@Override
public void onTick(long millisUntilFinished) {
    timeElapsed = (int)(startTime - millisUntilFinished);       
}   

}

这是主要的课程。

long millisUntilFinished = 0;
        timer myTime = new timer(5000, 1000);
        myTime.onTick(millisUntilFinished);

        if(myTime.onTick(millisUntilFinished) == 2000){
            //do the next process
        }

此代码告诉

  

对于类型为void,int

,运算符==未定义

我想如何获得覆盖方法中的值timeElapsed,并且该值可以在主类中用于下一个进程。

请帮我解决这个问题。谢谢你的进步。

2 个答案:

答案 0 :(得分:0)

void返回类型意味着该方法不返回任何值,因此当您尝试将void值与2000进行比较时会发生编译器错误。

这里最好的解决方案是简单地创建一个访问timeElapsed的getter方法,然后在相等比较中使用该方法。

public class timer extends CountdownTimer {
    ...
    public int getTimeElapsed() {
        return timeElapsed;
    }
    ...
}

然后,在main方法中,您可以使用该getter方法。

...
if (myTime.getTimeElapsed() == 2000) {
    // do the next process
}
...

答案 1 :(得分:0)

您的方法调用myTime.onTick(millisUntilFinished)不会返回任何错误。

我认为您正在尝试与timeElapsed进行比较,您可以按照以下方式进行比较。

getTimeElapsed()类中添加方法timer

   public int getTimeElapsed(){
      return timeElapsed;
   }

然后在你的主要方法中,你可以这样做:

    long millisUntilFinished = 0;
    timer myTime = new timer(5000, 1000);
    myTime.onTick(millisUntilFinished);

    if(myTime.getTimeElapsed() == 2000){
        //do the next process
    }