【问题标题】:Timed functions throw null pointer exception定时函数抛出空指针异常
【发布时间】:2015-12-28 04:13:45
【问题描述】:

您好,我正在创建一个类,我可以在其中传递被称为周期性或一次性的函数。 .问题是我传递的函数被立即调用,之后当它们被假定被调用时,我得到以下错误:

java.lang.NullPointerException
at TimedFunction$2.run(TimedFunction.java:41)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)

Base 类如下(仅相关部分):

import java.util.concurrent.Callable;
...

    public TimedFunction () {}

    public void addSingleEvent (Callable func, int seconds){
        //Convert to seconds from miliseconds
                int time = seconds * 1000;

                //Create a new timer
                new java.util.Timer().schedule( 
                        new java.util.TimerTask() {
                            @Override
                            public void run() {
                                try {
                                    func.call();
                                } catch (Exception e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }
                            }
                        }, 
                        time 
                );
    }

然后我做一个如下所示的测试类:

public static void main(String[] args) {
    // TODO Auto-generated method stub
    TimedFunction tm = new TimedFunction();

    tm.addSingleEvent(helloWorld(), 5);
    tm.addRepeatedEvent(dataWorld(), 1);
}

private static Callable helloWorld() {
    System.out.print("Hello world!");
    System.out.print(" ");
    return null;
}

【问题讨论】:

标签: java swing time callable


【解决方案1】:

检查您的 helloWorld 方法 - 它返回 null!

我觉得应该是这样的

private static Callable helloWorld() {
    return new Callable<String>() {
        return "Hello world";
    }
}

如果我不得不猜测,我认为您对如何使用lambas 感到困惑。如果是这样,你的语法是错误的,应该是这样的:

tm.addSingleEvent(() -> "hello world", 5);
tm.addRepeatedEvent(() -> "data world", 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2020-08-10
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多