在Java中,如何使方法能够接受可变参数或参数集而不重复实现代码?

Wil*_*hoi 0 java variadic-functions

我正在寻找一种方法,以便我可以使用相同的代码部分来处理通过Set或variadic参数传递的参数.例如

public void func(String...strs){
    for (String str : strs){
        //Deal with str
    }
}
Run Code Online (Sandbox Code Playgroud)

根据规范,func还将支持:

public void func(Set<String> strs){
    for (String str : strs)
        //Deal with str
    }
}
Run Code Online (Sandbox Code Playgroud)

}

两个处理代码都是相同的,我如何合并到单个实现?请提出建议.

谢谢.

问候,威廉

bma*_*ies 6

你提出的问题没有有效的解决方案.Varadic函数接收一个数组.没有魔杖会挥动自己并转换java.util.Set为阵列.

此外,语义不匹配,因为Set是无序的并且禁止重复,并且数组被排序并允许重复.

你可以将第二个函数定义为

public void func(Set<String> strs) {
   func(strs.toArray(new String[strs.size()]);
}
Run Code Online (Sandbox Code Playgroud)

并支付分配费用.