Извлеките свои sortGetter.invoke(e1)
и sortGetter.invoke(e2)
в переменные (try / catch для ясности опущен):
Object o1 = sortGetter.invoke(e1);
Object o2 = sortGetter.invoke(e2);
Проверьте, имеет ли значение null, и если да, верните:
if (o1 == null || o2 == null) {
// This results in nulls last. Use != for nulls first.
return Boolean.compare(o1 == null, o2 == null);
}
Теперь вы можете продолжить работу со своим if (sortGetter.getReturnType().equals(String.class))
-типом c (вам, очевидно, не нужно снова вызывать sortGetter.invoke(e1)
и sortGetter.invoke(e2)
).