java - 半通用检查是否为 Null,用 Java 中的默认函数替换

标签 java generics

我正在寻找一种方法来实现此操作的通用功能:

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/

相关文章:

java - 参数化类的 Hibernate 映射

java - JPA中是否有查询类的参数化版本?

java - 使用通用 Java 实现接口(interface)

Java:是否可以将 Class<?> 对象与泛型类型参数进行比较?

java - 在Java中使用 "DynaArray<int>"时出现语法错误?

java - Varargs、不可变数组和线程安全

java - 在 Eclipse 中突出显示其他符号?

java - Grails 2.4.5 解决获取依赖项的错误

Java 正则表达式文件扩展

Java泛型类型删除: when and what happens?