有沒有辦法撰寫一個介面,其方法由具有相同超類的類實作?我嘗試的是使用通用方法。
class person{
private String name;
//getter and setter
.
}
class Student extends Person{
private int points;
//getter and setter
.
}
class Worker extends Person{
private int salary;
//getter and setter
.
}
interface Printer{
<T extends Person> void print (T person);
}
class WorkerPrinter implements Printer {
@Override
public <T extends Person> void print(T person) {
System.out.println(person.getName());
System.out.println(person.getSalary());
}
}
person.getSalary()即使泛型型別 T 擴展自,編譯器也無法決議Person。
StudentPrinter我想以與類和實作的方法類似的方式使用此介面print(T Person)
所以基本上我想要的是將介面用于繼承自Person. 這當然只是一個例子。我想在一個更大的例子中使用它。這有可能嗎?它甚至有意義嗎?
uj5u.com熱心網友回復:
正如@Jon Skeet 已經建議的那樣(這就是為什么我將此答案設為社區 wiki 答案,因此請隨時進一步改進),您可能希望使您的界面具有泛型型別引數 T 而不是只有具有泛型引數型別 T 的方法.然后你可以寫:
interface Printer<T extends Person> {
void print (T person);
}
class WorkerPrinter implements Printer<Worker> {
@Override
public void print(Worker person) {
System.out.println(person.getName());
System.out.println(person.getSalary());
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/530637.html
標籤:爪哇仿制药遗产类型界面
