我正在寻找一种方法来实现此操作的通用功能:
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();
}
除了最后一个函数调用会失败,因为我们需要具体类的静态方法,而不是接口(interface)。
有解决办法吗?
最佳答案
不,不是真的——作为参数传递的 null
没有任何类型信息。您不能使用通用工厂来做到这一点,因为为此您需要手头有类型才能获得正确的工厂对象。
另一方面,为什么您需要这种模式?
关于java - 半通用检查是否为 Null,用 Java 中的默认函数替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16107859/