Проблема в том, что ваш метод binarySearch () принимает параметры, которые будут объектами, а не примитивными типами, поэтому неразумно сравнивать их, используя оператор равенства ==, и недопустимо сравнивать их, используя оператор меньше чем <.Вместо этого определите ваш метод binarySearch следующим образом: </p>
public static <T extends Comparable<T>> boolean binarySearch(T arr[],T val) {
int start = 0;
int end = arr.length-1;
while(start <= end) {
int mid=(start+end)/2;
int comparison = arr[mid].compareTo(val);
if(comparison == 0) {
return true;
}
if(comparison < 0) {
start = mid+1;
}
else {
end = mid-1;
}
}
return false;
}