Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从处理程序返回int_Java - Fatal编程技术网

Java 从处理程序返回int

Java 从处理程序返回int,java,Java,我有一个非常非常混乱的方法。我想从处理程序返回int。我的代码如下: public void getCasesFromFolder() { msg = handler.obtainMessage(); timer.schedule(new TimerTask(){ public void run(){ if(folder.list().length == 0) { msg.obj = "0

我有一个非常非常混乱的方法。我想从处理程序返回
int
。我的代码如下:

public void getCasesFromFolder() {

    msg = handler.obtainMessage();


    timer.schedule(new TimerTask(){
          public void run(){
              if(folder.list().length == 0)  {
                  msg.obj = "0";
                  handler.sendMessage(msg);
              }

              else {
                    msg.obj = Integer.toString(folder.list().length) ;
                    handler.sendMessage(msg);
              }

          }
    }, delay, 3000);
}

private Handler handler = new Handler() {

    @SuppressWarnings("unchecked")
    @Override
    public void handleMessage(Message m) {

        String message = (String) m.obj;
        if(message.equals("0")) {
            returnValues(0); 
        }
        else {
            returnValues(Integer.parseInt(message));
        }

    }

    public int returnValues(int i) {

        if(i == 0)
            return 0;
        else
            return i; 

    }
};

这当然不行。如何从处理程序返回int

在类中创建一个
int
属性,并让处理程序在
handleMessage()
方法中设置其值,而不是返回它


顺便说一下,您的
returnValues(
)方法完全没有用处,因为它可以简化为
returni
只返回参数。

在类中创建一个
int
属性,让处理程序在
handleMessage()
方法中设置其值,而不是返回它


顺便说一下,您的
returnValues(
)方法完全没有用处,因为它可以简化为
returni
只返回参数。

它不起作用,因为
void
无法返回任何内容。此功能还包括:

public int returnValues(int i) {

        if(i == 0)
            return 0;
        else
            return i; 

    }

什么都不做。此外,您没有以任何方式操纵对象。您正在调用一个函数
returnValues
,该函数不对
处理程序
对象的任何属性执行变异(或设置操作)。这意味着当调用
returnValues
时,您只是在丢弃结果,因为它将超出范围。

它不起作用,因为
void
无法返回任何内容。此功能还包括:

public int returnValues(int i) {

        if(i == 0)
            return 0;
        else
            return i; 

    }

什么都不做。此外,您没有以任何方式操纵对象。您正在调用一个函数
returnValues
,该函数不对
处理程序
对象的任何属性执行变异(或设置操作)。这意味着当调用
returnValues
时,您只是在丢弃结果,因为它将不在范围内。

如果您分享更多关于您尝试完成的内容的背景信息,可能会有所帮助。如果您分享更多关于您尝试完成的内容的背景信息,可能会有所帮助。+1对于尝试实际建议解决方法,而不是直截了当地说这不可能。+1表示尝试实际建议解决方案,而不是直截了当地说这不可能。处理程序是他实现的接口,签名方法很可能不会更改。显然,他想要的是一种在方法执行后从当前类访问int的方法,这是他用这个解决方案无法做到的。@KayKay我的回答中有什么是不正确的?虚空不会返回任何东西,他的腋窝功能也不会返回任何东西。我明确地说OP需要一个变异子。事实上,我的答案和你的几乎一样,所以我看不出你的抱怨。我从来没有说过这是错误的。我只是说它不能解决问题。@KayKay我关于如何解决问题的解释缺少了什么部分<代码>您调用的函数returnValues不会对处理程序的任何属性执行变异(或设置操作)在那里列出需要执行的操作。问题是从处理程序方法外部访问该值。你说的都没用。returnValues方法与他的问题无关,尽管它是一个无用的方法。处理程序是他实现的接口,签名方法很可能不会被更改。显然,他想要的是一种在方法执行后从当前类访问int的方法,这是他用这个解决方案无法做到的。@KayKay我的回答中有什么是不正确的?虚空不会返回任何东西,他的腋窝功能也不会返回任何东西。我明确地说OP需要一个变异子。事实上,我的答案和你的几乎一样,所以我看不出你的抱怨。我从来没有说过这是错误的。我只是说它不能解决问题。@KayKay我关于如何解决问题的解释缺少了什么部分<代码>您调用的函数returnValues不会对处理程序的任何属性执行变异(或设置操作)在那里列出需要执行的操作。问题是从处理程序方法外部访问该值。你说的都没用。returnValues方法与他的问题无关,尽管它是一个无用的方法。