以下是有关如何制作 java 泛型类以将单个项目附加到数组的片段。如何使 appendToArray 成为静态方法。将静态添加到方法签名会导致编译错误。
public class ArrayUtils<E> {
public E[] appendToArray(E[] array, E item) {
E[] result = (E[])new Object[array.length+1];
result[array.length] = item;
return result;
}
}
最佳答案
你唯一能做的就是把你的签名改成
public static <E> E[] appendToArray(E[] array, E item)
重要细节:
返回值之前的泛型表达式总是引入(声明)一个新的泛型类型变量。
此外,类型 (ArrayUtils
) 和静态方法 (appendToArray
) 之间的类型变量不会相互干扰。
那么,这是什么意思:
在我的回答中 <E>
会隐藏 E
来自 ArrayUtils<E>
如果方法不是 static
.和 <E>
与 E
无关来自 ArrayUtils<E>
.
为了更好地反射(reflect)这一事实,更正确的答案是:
public static <I> I[] appendToArray(I[] array, I item)
关于java - 如何使 Java 通用方法静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4409100/