【发布时间】:2018-06-11 11:06:03
【问题描述】:
我的 Java 代码有问题。我想通过使用泛型类型使我的方法通用。用代码更容易解释:
public interface Destroyable {
void destroy();
default void destroyArray(byte[] array) {
Arrays.fill(array, (byte)0);
}
default void destroyArray(char[] array) {
Arrays.fill(array, (char)0);
}
}
重点是,我希望我的默认方法 destroyArray 可以用于任何类型,如下所示:
public interface Destroyable {
void destroy();
default <E> void destroyArray(Class<E>[] array) {
Arrays.fill(array, (E)0);
}
}
它给了我错误:
不可转换的类型;不能将“int”转换为“E”
有没有简单的解决方案来实现这一点?
【问题讨论】:
-
将
0替换为null。Class<E>[]也应该是E[] -
@Lino 哇,就这么简单,谢谢 :) 还有一个问题,是否有任何理由将其保留为
Class<E>[]或仅使用E[]? -
这意味着完全不同的东西。
Class<E>是一个Class对象,一个提供反射访问以分析类内容的包装器。就像获取方法的名称和类似的东西。而E是类本身。所以Person是一个person 类,Class<Person>就像一个知道Person类的东西的类,比如它的方法名。 -
还有一件事:
destroyArray()不应该是一个实例方法,而应该是一个static一个,因为它只是一个助手