我有这样的方法:public static <T> boolean isMemberOf(T item, T[] set){ for (T t : set) { if (t.equals(item)) { return true; } } return false;}现在,我尝试使用charfor 来调用此方法T:char ch = 'a';char[] chars = new char[] { 'a', 'b', 'c' };boolean member = isMemberOf(ch, chars);这行不通。我希望charand char[]将自动装箱到Character和Character[],但这似乎没有发生。有什么见解吗?
3 回答

慕沐林林
TA贡献2016条经验 获得超9个赞
为什么char[]要装箱Character[]?数组始终是引用类型,因此不需要装箱。
此外,这将非常昂贵-它涉及创建一个新数组,然后依次将每个字符装箱。kes!

长风秋雁
TA贡献1757条经验 获得超7个赞
您可以使用反射来获得适用于所有类型的数组的方法,但是您将失去类型安全性,因此这可能不是您想要的。
import java.lang.reflect.Array
public static boolean isMemberOfArray(Object item, Object array)
{
int n = Array.getLength(array)
for (int i = 0; i < n; i++) {
if (Array.get(array, i).equals(item)) {
return true;
}
}
return false;
}
添加回答
举报
0/150
提交
取消