为了账号安全,请及时绑定邮箱和手机立即绑定

Java:原始数据类型数组不会自动装箱

Java:原始数据类型数组不会自动装箱

忽然笑 2019-11-19 10:33:37
我有这样的方法: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 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

数组没有自动装箱,仅原始类型。我相信这是您的问题。


查看完整回答
反对 回复 2019-11-19
?
慕沐林林

TA贡献2016条经验 获得超9个赞

为什么char[]要装箱Character[]?数组始终是引用类型,因此不需要装箱。


此外,这将非常昂贵-它涉及创建一个新数组,然后依次将每个字符装箱。kes!


查看完整回答
反对 回复 2019-11-19
?
长风秋雁

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;

}


查看完整回答
反对 回复 2019-11-19
  • 3 回答
  • 0 关注
  • 646 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信