我正在寻找一种使该操作具有通用功能的方法:

SomeObject object = (object != null) ? object : SomeObject.default();


假定SomeObject.default()返回SomeObject的默认实例。

我在想我需要一个像这样的界面:

public interface Defaultable {
     public /* static */ Defaultable default(); //corrected
}


和类似的功能:

public Defaultable defaultIfNull(Defaultable someOb){
    return (someOb != null) ? someOb : Defaultable.default();
}


除非最后一个函数调用将失败,是因为我们需要具体类的静态方法,而不是接口。

有没有解决的办法?

最佳答案

不,不是真的-作为参数传递的null没有任何类型信息。您不能使用通用工厂来做到这一点,因为为此您将需要手头的类型来获取适当的工厂对象。

第三,为什么需要这种模式?

08-07 00:04