我有以下代码:
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的情况下,我不知道该返回什么。
答案 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;
}