我有下面的方法,其中传递给方法的参数根据作为第一个参数传递的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
不可以。不可以。您的逻辑将仍然封装在一个方法中(就像现在这样),重载将只是参数组合的包装。 –