我有下面的方法,其中傳遞給方法的參數根據作爲第一個參數傳遞的ENUM的值而變化。當參數根據第一個參數變化時處理方法簽名
public void startReporter(ReportType reportType, long period, Class className) {
reportHandler = new ReportHandler(metricRegistry);
switch (reportType) {
case CONSOLE_REPORTER:
reportHandler.startConsoleReport(period);
break;
case SLF4J_REPORTER:
reportHandler.startSLF4JReport(className,period);
break;
case JMX_REPORTER:
reportHandler.startJMXReport();
}
}
正如您所看到的,並非所有傳遞的參數都用於switch語句中的所有情況。解決這種情況的最佳方法是什麼?我不想有3種方法。我只需要用這種方法做到這一點。如果方法的調用者通過查看簽名就可以瞭解這一點,那將是非常好的。
創建將在調用main方法時爲可選參數傳遞'null'的重載。 –
創建超載等同於有3種不同的方法來調用記錄器而不用Enum是不是? – mayooran
不可以。不可以。您的邏輯將仍然封裝在一個方法中(就像現在這樣),重載將只是參數組合的包裝。 –