如何使用List类型的参数声明具有相同函数名的不同方法

时间:2016-02-23 03:24:08

标签: java

在我们的项目中,我想声明两个具有相同函数名,相同输入参数的函数。参数类型是List,元素的类型与ObjectId和String不同,这将导致编译错误。让我们看看下面的例子:

public List<T> get(List<? extends ObjectId> ids)
{
    ...
}

public List<T> get(List<? extends String> ids)
{
    ...
}

感谢。

2 个答案:

答案 0 :(得分:1)

解决方法

只需使用不同的名称扩展您的不同列表

    public class MethodTest {

    public static void main(String[] args) {

    }

    public void print(Integers list) {

    }

    public void print(Strings list) {

    }
}

class Strings extends ArrayList<String>
{}

class Integers extends ArrayList<Integer>
{}

答案 1 :(得分:0)

如果每个方法以相同的方式处理List,那么我认为你可以使用一个方法public List<T> get(List<Object> ids),然后检查列表中包含的内容类型方法。

即使他们没有以同样的方式处理List,你仍然可以做类似的事情:

if (ids.get(0) instanceof Integer){
    //do something
} else if (ids.get(0) instanceof String){
    //do something else
} else {
    //do yet another thing
}