我试图指定一个泛型类必须是一个数组,或者更好的是一个原始数组。到目前为止,这就是我的工作:
interface Foo<T> {
void process( T data );
}
public class Moo implements Foo<int[]> {
void process( int[] data ) {
// do stuff here
}
}
这都是完全有效的 Java 代码并且可以工作,因为原始数组扩展了 Object。请注意,这个问题与我一直在寻找的所有其他 Java 数组通用问题完全不同。在这种情况下,人们希望从泛型类型中创建一个数组。
问题是类型 T 可以是扩展 Object 的任何东西。我想要做的是:
<T extends ONLY ARRAYS>
或者
<T extends ONLY PRIMITIVE ARRAYS>.
那可能吗?
编辑:最终目标是对传入的数组类型添加编译时检查。现在可以传入任何旧对象,它会编译得很好。只有在抛出类转换异常时,才会在运行时发现错误。事实上,这就是 Java 中泛型的重点,它可以添加更强大的编译时类型检查。