'Java Errors: method cannot be applied to given types, inference variable has incompatible bounds

While working on implementing the Merge Sort method in Java in a Sorting.java file, as part of an assignment, I am attempting to test my code with a separate Driver.java file.

Here is the header of the mergeSort() method in the Sorting.java file:

public class Sorting {
    public static <T> void mergeSort(T[] arr, Comparator<T> comparator) {
    }
}

Then, here is how I am trying to test it in the Driver.java file:

public class Driver {
    public static void main(String[] args) {
        int[] testMergeSort1 = { 9, 13, 5, 6, 12, 10, 3, 7, 2, 8, 0, 15, 1, 4, 14, 11 };
        Sorting.mergeSort(testMergeSort1, new IntegerComparator());
        System.out.println(Arrays.toString(testMergeSort1));
    }

    public class IntegerComparator implements Comparator<Integer> {
        @Override
        public int compare(Integer a, Integer b) {
            return a.intValue() - b.intValue();
        }
    }
}

Here are the errors that compiling the file generates:

Driver.java:29: error: non-static variable this cannot be referenced from a static context
        Sorting.mergeSort(testMergeSort1, new IntegerComparator());
                                          ^
Driver.java:29: error: method mergeSort in class Sorting cannot be applied to given types;
        Sorting.mergeSort(testMergeSort1, new IntegerComparator());
               ^
  required: T[],Comparator<T>
  found:    int[],Driver.IntegerComparator
  reason: inference variable T has incompatible bounds
    equality constraints: Integer,int
    lower bounds: Object
  where T is a type-variable:
    T extends Object declared in method <T>mergeSort(T[],Comparator<T>)

Trying Sorting.mergeSort(testMergeSort1, new IntegerComparator); instead of Sorting.mergeSort(testMergeSort1, new IntegerComparator()); generates the following error:

error: '(' or '[' expected
        Sorting.mergeSort(testMergeSort1, new IntegerComparator;

Any guidance understanding what the issue is and how to move towards resolving it would be appreciated.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source