Mercurial > jhg
diff src/org/tmatesoft/hg/internal/ArrayHelper.java @ 658:d10399f80f4e
javac complained about casts, while eclipse compiler is fine
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 04 Jul 2013 21:09:33 +0200 |
parents | 6334b0267103 |
children | f568330dd9c0 |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/internal/ArrayHelper.java Thu Jul 04 20:27:45 2013 +0200 +++ b/src/org/tmatesoft/hg/internal/ArrayHelper.java Thu Jul 04 21:09:33 2013 +0200 @@ -110,8 +110,7 @@ * Slightly modified version of Arrays.sort1(int[], int, int) quicksort alg (just to deal with Object[]) */ private void sort1(int off, int len) { - @SuppressWarnings("unchecked") - Comparable<Object>[] x = (Comparable<Object>[]) sorted; + Comparable<Object>[] x = comparableSorted(); // Insertion sort on smallest arrays if (len < 7) { for (int i=off; i<len+off; i++) @@ -178,12 +177,22 @@ * Returns the index of the median of the three indexed integers. */ private int med3(int a, int b, int c) { - @SuppressWarnings("unchecked") - Comparable<Object>[] x = (Comparable<Object>[]) sorted; + Comparable<Object>[] x = comparableSorted(); return (x[a].compareTo(x[b]) < 0 ? (x[b].compareTo(x[c]) < 0 ? b : x[a].compareTo(x[c]) < 0 ? c : a) : (x[b].compareTo(x[c]) > 0 ? b : x[a].compareTo(x[c]) > 0 ? c : a)); } + + private Comparable<Object>[] comparableSorted() { + // Comparable<Object>[] x = (Comparable<Object>[]) sorted + // eclipse compiler is ok with the line above, while javac doesn't understand it: + // inconvertible types found : T[] required: java.lang.Comparable<java.lang.Object>[] + // so need to add another step + Comparable<?>[] oo = sorted; + @SuppressWarnings("unchecked") + Comparable<Object>[] x = (Comparable<Object>[]) oo; + return x; + } /** * Swaps x[a] with x[b].