[英]Java Calling child constructors of same parent class
有什么方法可以簡化嗎?
switch (student.getYear())
case 1:
new FirstYear(student.getId(), student.getName());
break;
case 2:
new SecondYear(student.getId(), student.getName());
break;
case 3:
new ThirdYear(student.getId(), student.getName());
break;
default:
break;
FirstYear,SecondYear,ThirdYear類在哪個父類中共享?
Java中是否有任何方法可以傳遞子類並使用其構造函數? 他們是否共享相同的構造函數結構?
即。
public static void registerStudent(final Class yearClazz) {
new yearClazz(student.getId(), student.getName()).save(); //???
}
這樣的東西?
您可以使用方法參考和功能接口。 使用單個方法創建一個接口(可以使用@FunctionalInterface
注釋),該方法采用一個學生ID和名稱,並返回FirstYear / SecondYear / ThirdYear的父級。 假設調用該接口YearFactory
和方法makeYear
。 然后, FirstYear::new
, SecondYear::new
和ThirdYear::new
都是實現該接口的對象。
switch (student.getYear())
case 1:
fac = FirstYear::new;
break;
case 2:
fac = SecondYear::new;
break;
case 3:
fac = ThirdYear::new;
break;
default:
break;
public static void registerStudent(final YearFactory fac) {
fac.makeYear(student.getId(), student.getName()).save();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.