簡體   English   中英

Java調用相同父類的子構造函數

[英]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::newSecondYear::newThirdYear::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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM