我想指定一个泛型类必须是一个数组,或者更好的是一个基本类型的数组。目前为止,这是我得到的代码:
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中泛型的全部意义,即添加更强的编译时类型检查。
char
,它似乎不适合。而boolean
每个元素占用一个字节,没有等效的碎屑或半字节类型。 - Tom Hawtin - tackline