如何使用varargs重载方法?

时间:2017-03-08 12:16:22

标签: java

我有一个重载保存方法的服务。但问题是,当我想用​​4个变量调用这个方法时,它会产生编译错误。

Incompatible type: String cannnot be converted to Task

有没有办法在不改变方法名称的情况下调用第一个保存方法?

public void save(String message, Object... os) {//first save
    adapter.save(formatMessage(message), os);
}

public void save(String username, Task task, String message, Throwable ex) {//second save
    adapter.save(formatMessage(username, task, message));
}

我打电话给4个变量;

myService.save("test", request.getMethod(), request.getRequestURI(),
            Integer.valueOf(request.getContentLength()));

1 个答案:

答案 0 :(得分:0)

我认为你的两种方法做了两件不同的事情;略有不同,但不同。因此:您可以考虑在此处使用不同的名称!

请记住,不应轻易使用重载,并且您提供的示例不会从中受益。

除此之外:你一定要看看你的“命名”;正如os确实说的那样......没有关于这些论点。从代码质量的角度来看,我想知道它是否会好得多:

public void saveRequestDetails(String message, Request request) {

而不是你现在正在做的事情。