我正在寻找一种使该操作具有通用功能的方法:
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
没有任何类型信息。您不能使用通用工厂来做到这一点,因为为此您将需要手头的类型来获取适当的工厂对象。
第三,为什么需要这种模式?