Я думаю, что самый простой способ проверить, является ли эта функция классом ES6, - проверить результат метода .toString()
. Согласно es2015 spec :
Строковое представление должно иметь синтаксис FunctionDeclaration FunctionExpression, GeneratorDeclaration, GeneratorExpression, ClassDeclaration, ClassExpression, ArrowFunction, MethodDefinition или GeneratorMethod в зависимости от по фактическим характеристикам объекта
blockquote>Таким образом, функция проверки выглядит довольно просто:
function isClass(func) { return typeof func === 'function' && /^class\s/.test(Function.prototype.toString.call(func)); }
Вы можете создать свой собственный компаратор.
Comparator<Student> comparator = new Comparator<Student>()
{
@Override
public int compare(Student o1, Student o2)
{
int index1 = list1.indexOf(o1.getName());
int index2 = list1.indexOf(o2.getName());
return Integer.compare(index1 , index2 );
}
};
и чем сортировать:)
java.util.Collections.sort(yourList, comparator);