0

我有两种方法

public void login(String userName, String password)
{

}

public void login(String userName, String password, Object loginOption)
{

}

我希望用某种方法让他们都被独奏:

public boolean getThingsDone(Object...vargs)
{
    //Do The Real Action
    return true;
}

所以我必须进行不同的函数调用:

public void login(String userName, String password)
{
    getThingsDone(userName,password);
}

public void login(String userName, String password, Object loginOption)
{
    getThingsDone(userName,password,loginOption);
}    

有什么方法可以将不同的参数放入一个列表中,这样我就可以进行相同的调用

getThingsDone(parameterList);

我不知道,但将这两种方法都声明为 login(String ...vargs),但这会使其他人使用此方法感到困惑。

有没有人遇到过这个问题?任何提示将不胜感激。

4

3 回答 3

3

您可以创建Login具有三个属性的类: - username, password, loginOption

public class Login {
    private String username;
    private String password;
    private Object loginOptions;

    // Constructors
    // public accessors.
}

并在您的登录方法Login中将引用作为参数传递:-

public void login(Login login) {

}

所以,如果你想通过loginOptions,这样称呼它: -

login(new Login(username, password, loginOptions));

否则,只需使用一个2-parameterized constructorLogin:-

login(new Login(username, password));

并从登录方法中调用其他方法,如下所示:-

getThingsDone(login);

Now in that method, check : - if (login.getLoginOptions() != null). If it is null, then do things related to username and password. And if it is not null, then do things related to all of them.

于 2012-11-15T07:07:57.700 回答
3
public void login(String userName, String password, Object loginOption)

This method should do the thing and should be able to handle the situation when loginOption is null.

Then you could invoke it as follows:

public void login(String userName, String password) {
    login(userName, password, null);
于 2012-11-15T07:14:33.160 回答
0

You can pass an array list and use the length to do what ever you need. Why not use overloaded methods and modularize the rest of the code?

于 2012-11-15T07:09:13.543 回答