我是Java 8的新手。我正在尝试创建一个示例,以引用特定类型的任意对象的实例方法。
我有一个具有一个字段Name的人员类,并尝试对人员类的firstName字段上的人员对象数组进行排序。
public class Person{
String firstName;
public Person(String firstName) {
super();
this.firstName = firstName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public int compareByFirstName(Person p1, Person p2) {
return p1.getFirstName().compareTo(p2.getFirstName());
}
}
public class TestInstanceMethorRefArbObjSample {
public static void main(String[] args) {
TestInstanceMethorRefArbObjSample obj=new TestInstanceMethorRefArbObjSample();
obj.personSorting();
}
private void personSorting() {
Person[] personArr= {new Person("Jinesh"),new Person("Sejal"),new Person("Ashish")};
Arrays.sort(personArr,Person::compareByFirstName);
}
}
但是我在下面的行面临编译问题。
Arrays.sort(personArr,Person::compareByFirstName);
1.类型Person未定义在此处适用的compareByFirstName(T,T)TestInstanceMethorRefArbObjSample.java / InstaceMethodArbitaryObjectProject / src / com / methodreference / instancemethodrefarbitary / client line 11 Java问题2.类型Person未定义compareByFirstName(T,T )适用于此处TestInstanceMethorRefArbObjSample.java / InstaceMethodArbitaryObjectProject / src / com / methodreference / instancemethodrefarbitary / client line 11 Java问题
我只是想通过int compare(T o1,T o2)的实现;使用Person类的compareByFirstname。
一旦将Person类的compareByFirstname方法更改为静态,一切就可以正常工作。
为什么需要将compareByFirstname更改为静态方法才能使其正常工作?
临摹微笑
慕娘9325324
相关分类