Есть много разных способов сделать это.Возможно, вы захотите проверить функциональную документацию: https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
В вашем случае вы, вероятно, захотите изменить свою функцию верхнего уровня на потребителя других функций.
Что-то вроде:
public static void sortTest(int num, BiFunction<Integer, Integer, Integer> sortFunction) {...}
(В данном случае это BiFunction или его называют sortFunction.apply(int, int) returning an int
Функциональные интерфейсы немного неуклюжи в Java, но ониработают нормально (и были в той или иной форме в течение довольно долгого времени). В Java 1.8 и более поздних версиях есть более формальная поддержка лямбд, что делает их более удобными.
По сути, это просто интерфейсэто может быть функцией. Затем вы можете создать функции сортировки с разными именами:
BiFunction<Integer, Integer, Integer> ascending = (a,b) -> { ... return sort; //-1 0 1};
BiFunction<Integer, Integer, Integer> descending = (a,b) -> { return ascending.apply(b, a) };
...etc...
Затем они могут быть переданы вашему статическому методу:
...
YourClass.sortTest(10, ascending)
...
Надеемся, что это укажет на васправильное направление. Похоже, вы новичок в Java, не бойтесь задавать вопросы.