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

我有这样的方法:


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[],但这似乎没有发生。


有什么见解吗?


忽然笑
浏览 647回答 3
3回答

SMILET

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

慕沐林林

为什么char[]要装箱Character[]?数组始终是引用类型,因此不需要装箱。此外,这将非常昂贵-它涉及创建一个新数组,然后依次将每个字符装箱。kes!

长风秋雁

您可以使用反射来获得适用于所有类型的数组的方法,但是您将失去类型安全性,因此这可能不是您想要的。import java.lang.reflect.Arraypublic static boolean isMemberOfArray(Object item, Object array){&nbsp; &nbsp; int n = Array.getLength(array)&nbsp; &nbsp; for (int i = 0; i < n; i++) {&nbsp; &nbsp; &nbsp; &nbsp; if (Array.get(array, i).equals(item)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return false;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java