Java形式类型参数定义(泛型)

Dón*_*nal 8 java generics

我想定义一个泛型类型,其实际类型参数只能是

  1. 一个数字原始包装类的(Long,Integer,Float,Double)
  2. String

我可以通过这样的定义满足第一个要求

public final class MyClass<T extends Number> {
    // Implementation omitted
}
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何满足他们两个.我怀疑这实际上是不可能的,因为AFAIK在定义形式类型参数时没有办法指定"或"语义,尽管你可以使用如下的定义来指定"和"语义

public final class MyClass<T extends Runnable & Serializable > {
    // Implementation omitted
}
Run Code Online (Sandbox Code Playgroud)

干杯,唐

Dav*_* L. 11

Java泛型不支持联合类型(此参数可以是A OR B).

在某些可能感兴趣的相关注释中,如果要强制执行多个限制,它确实支持多个边界.以下是Java 泛型教程中提到的JDK 示例:

public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
Run Code Online (Sandbox Code Playgroud)


Yuv*_*dam 0

有趣的问题,让我有点困惑。然而显然这是不可能的。我尝试了几种不同的技巧,但没有一个真正有效。