泛型 - 正确处理原始类型警告:

时间:2017-12-26 14:14:12

标签: java generics annotations instantiation

实现泛型方法时,我使用了以下语句:

@SuppressWarning({"unchecked"})
private static <T extends Comparable<T>> T[] merge(T[] arrayA, T[] arrayB) {
  ...
  T[] result;

// This is the line that needs that gives warnings    
  result = (T[]) Array.newInstance(arrayA.getClass().getComponentType(), arrayA.length + arrayB.length);
  ...

现在,许多编程资源都表示,避免将@SuppressWarnings用于未经检查的原始类型是一种很好的编程习惯。但是,在这种情况下,我不知道如何在代码中解决此警告。在网上搜索最佳实践以在Java中实例化泛型类型并没有给出一个明确的方法。事实上,我发现的许多解决方案都不太理想。

在这段代码中,如果不将@SuppressWarnings添加到方法中,删除原始类型警告的最佳方法是什么?我做了最好的方法吗?

1 个答案:

答案 0 :(得分:0)

在某些情况下,您无法避免Application mywebapp has no deployed JAX-RS applications。在处理泛型数组时,甚至标准JDK类也使用@SuppressWarnings

示例:

@SuppressWarnings("unchecked")上课:

Arrays

说到@SuppressWarnings("unchecked") public static <T> T[] copyOf(T[] original, int newLength) { return (T[]) copyOf(original, newLength, original.getClass()); } ,您可以将该方法与Arrays.copyOf结合使用,而不是使用当前逻辑:

System.arraycopy