在java中,如何将基元类型数组作为对象数组传递?
我希望以下函数对于所有数据类型都是通用的。但是,这不适用于基本数据类型。为什么呢? 有人能给出解决办法吗?我将不胜感激在java中,如何将基元类型数组作为对象数组传递?,java,arrays,object,primitive-types,Java,Arrays,Object,Primitive Types,我希望以下函数对于所有数据类型都是通用的。但是,这不适用于基本数据类型。为什么呢? 有人能给出解决办法吗?我将不胜感激 private int getIndexOfElement(Object x, Object[] xArray){ for(int i=0; i<xArray.length;i++){ if(xArray[i]==x){ return i; } }
private int getIndexOfElement(Object x, Object[] xArray){
for(int i=0; i<xArray.length;i++){
if(xArray[i]==x){
return i;
}
}
return -1;
}
private int getIndexOfElement(对象x,对象[]xArray){
对于(int i=0;i您的方法getIndexOfElement(int,Object[])
接受扩展Object
的任何类型数组。由于int
是基元类型,而不是类类型,您不能将int[]
传递给该方法。但是,您可以使用Integer
类:
Integer[] ints = new Integer[]{1,2,3,4,5};
Integer i = 5;
int index = getIndexOfElement(i, ints);
您的方法getIndexOfElement(int,Object[])
接受扩展Object
的任何类型数组。由于int
是基元类型,而不是类类型,因此无法将int[]
传递给该方法。但是,您可以使用Integer
类:
Integer[] ints = new Integer[]{1,2,3,4,5};
Integer i = 5;
int index = getIndexOfElement(i, ints);
原语不是对象。很简单。这是不可能做到的。使用反射可以做到这一点,但几乎肯定不推荐这样做。反射很笨重而且容易出错,所以您应该仔细考虑使用它是否真的是一个好的决定。但是了解它很有用。在Java 8中,您可以使用以下内容:Arrays.stream(数据).boxed().toArray(整数[]:::新)
将基本体数组转换为对象数组。@Titus你是建议将整个数组复制到一个新数组中,只是为了找到索引吗?这似乎有点……不明智。基本体不是对象。很简单。这是无法做到的。使用反射可以做到这一点,但几乎肯定不建议这样做。反射是笨重的d容易出错,因此您应该仔细考虑使用它是否真的是一个好的决定。但了解它很有用。在Java 8中,您可以使用以下内容:Arrays.stream(data.boxed().toArray(Integer[]::new)
将基本体数组转换为对象数组。@Titus您是否建议将整个数组复制到一个新数组中,只是为了找到索引?这似乎有点……不明智。