【问题标题】:Java return must not be nullJava 返回值不能为空
【发布时间】:2015-02-17 18:32:43
【问题描述】:

我有以下代码:

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

Environment.getScript() 返回当前的 AbstractScript

但是,这个 AbstractScript 可能为 null,但 getScript() 返回的 S(它是一个 AbstractScript)不能为 null,因为它被多次使用,因此我不想一直对其进行 null 检查。

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

【问题讨论】:

    标签: java null return


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-24
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 2018-01-28
      • 2017-07-13
      相关资源
      最近更新 更多