Java返回不能为null

时间:2014-12-18 20:59:48

标签: java null return

我有以下代码:

public abstract class Task<S extends AbstractScript>
    public S getScript() {
        return (S) Environment.getScript();
    }
}

Environment.getScript()返回当前的AbstractScript

但是,这个AbstractScript可能为null,但是getScript()返回的S(这是一个AbstractScript)不能为null,因为它被多次使用,因此我不想将它全部检查出来时间。

我想到null检查Environment.getScript(),但是在null的情况下,我不知道该返回什么。

1 个答案:

答案 0 :(得分:1)

如果它不能为空,但您不知道要返回什么,请:

具体实现指定其默认值:

public abstract class Task<S extends AbstractScript> {
    private final S deflt;
    protected Task(S deflt) {
        this.deflt = deflt;
    }

    public S getScript() {
        S s = (S)Environment.getScript();
        return s == null ? deflt : s;
    }
}

或让调用者指定它:

public S getScript(S deflt) {
    S s = (S)Environment.getScript();
    return s == null ? deflt : s;
}