java - 使用泛型类型的嵌入式泛型

标签 java generics

我有两个不同的类(class)。一个是通用的 valueHolder,它可以包含任何扩展数字的内容。

class ValueHolder<T extends number>{
    private T currentValue;

   //more functions, database logic, etc...
}

另一个类更复杂,有一个“targetValue”。它的参数化也是这样的:

class MoreComplexClass<T extends ValueHolder<?>>
    private T valueHolder;
    private XXX requiredValue;

    //a lot more functions.
}

MoreComplexClass 的 requiredValue 使用 valueHolder 的 Type 是否“可能”? 我想要实现的是:Beeing 能够将 currentValue 和 requiredValue 与 > == < 运算符进行比较,而无需强制转换且不会失去类型安全性。 (也许我也在想复杂的方法来实现这个)

最佳答案

答案是肯定的,您可以这样声明复杂类:

class MoreComplexClass<N extends Number, T extends ValueHolder<N>>
    private T valueHolder;
    private N requiredValue;

    //a lot more functions.
}

但由于您使用的是 Number 类,您将无法使用这些运算符,您需要使用 XXXvalue() 方法之一(即:Number 类中的 doubleValue()longValue()),以便能够使用这些运算符。

关于java - 使用泛型类型的嵌入式泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14317259/

相关文章:

java - 使用java代码清除jboss缓存

java - 代码可以编译并运行,但有一部分无法正确循环

java - 在 java 中实现一个简单的泛型函数时出现编译错误?

java - 无法从 List<List> 转换为 List<List<?>>

java - 一段简单的 Java 代码运行效果不佳

java - 尝试在 forEach 方法中返回某些内容时,Void 方法无法返回值错误

java - fragment 中的 TextView 不起作用

java - 当 Enum 的字符串表示和类型在运行时已知时如何获取 Enum?

java - 为什么类的泛型类型参数允许在类内部进行强制转换

generics - Swift 泛型和 CMutableVoidPointer