Не проверено приведение от общего T к сопоставимой, предотвращающей компиляцию - PullRequest
3 голосов
/ 02 марта 2012

Я должен реализовывать сортировку слиянием без рекурсии. Я закончил весь этот джаз, но класс не собирается по причинам, выходящим за рамки домашнего задания. Вот проблема:

Этот аспект взят непосредственно из учебника ...

 public <T extends Comparable<? super T>> void Mergesort(T[] a){
  T[] tmpArray =(T[]) new Comparable[a.length];

1 найденное предупреждение:

Файл: /Users/OcastaEshu/Java/NonRecursiveMergesort.java [строка: 22]

Предупреждение: /Users/OcastaEshu/Java/NonRecursiveMergesort.java:22: предупреждение: [не проверено] не проверено приведение

найдено: java.lang.Comparable [] требуется: T []

1 Ответ

1 голос
/ 02 марта 2012

Если вы хотите избежать предупреждения, вы можете сделать что-то вроде этого:

public static <T extends Comparable<? super T>> void Mergesort(T[] a, Class<T[]> clazz) { 
    T[] tmpArray = clazz.cast(Array.newInstance(a.getClass().getComponentType(), a.length));
}

Где classOfelement a.getClass(). Я согласен, это ужасно, и вам лучше использовать @SuppressWarnings вместо такого рода кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...