[英]Cannot call instance method in a Comparator generic class
我的問題接近於這個問題( 泛型類中的靜態方法? ),但我認為有些不同嗎?
說我有一個帶有實例方法getSalary()
的Employee
類
public class Employee {
protected long employeeId;
protected int salary;
public int getSalary() {
return salary;
}
}
還有一個Comparator通用類MyComparator
public class MyComparator<Employee> implements Comparator<Employee> {
public int compare(Employee emp1, Employee emp2) {
return emp1.getSalary() - emp2.getSalary();
}
}
現在,我有一個MyComparator<Employee>
的警告和調用getSalary()
實例方法的錯誤。
我想我在這里遺漏了一些東西,但無法確切了解發生了什么? 在Employee
類上聲明通用比較器的最佳方法是什么? 最佳做法? 還是建議在下面的代碼中實現Employee
Comparable
?
public class Employee implements Comparable<Employee> {
protected long employeeId;
protected int salary;
public int getSalary() {
return salary;
}
@Override
public int compareTo(Employee e) {
return this.salary - e.salary;
}
}
任何建議歡迎和贊賞!
您正在Comparator
類中聲明類型參數Employee
。 該類聲明與:
public class MyComparator<T> implements Comparator<T>
得到問題了嗎? 您應該將該類更改為:
public class MyComparator implements Comparator<Employee> {
public int compare(Employee emp1, Employee emp2) {
return emp1.getSalary() - emp2.getSalary();
}
}
您的MyComparator<Employee>
與編寫MyComparator<E extends Object>
我希望你打算寫的是
public class MyComparator implements Comparator<Employee> {
public int compare(Employee emp1, Employee emp2) {
return emp1.getSalary() - emp2.getSalary();
}
}
在這種情況下, Employee
是一個類,而不是參數化類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.