int []和Integer []之间的区别以及为什么要区别对待它们?

时间:2018-08-30 08:30:13

标签: java arrays boxing

我有两段代码,主要重点是方法Arrays.asList(T... a)
在它们的第一个中,我输入了Integer[],在第二个中,我输入了int[],并且-这是使我感到困惑的部分,在两种情况下,所得的List<...>是不同的:

Integer[] arrayBoxed = new Integer[10];
List<Integer> list = Arrays.asList(arrayBoxed);

这很短,并且未设置arrayBoxed中的任何值,但它可以工作并产生List<Integer>

int[] array = new int[10];
List<int[]> list = Arrays.asList(array);

在这种情况下,由于某种原因,我得到了List<int[]>,这是一个非常病理的构造。

那是为什么?

问题是,给定Arrays.asList的类似输入,我希望这两个函数都输出相同的代码(两个代码段都是完整的功能)。但是,方法一次返回List<Integer>,另一次返回List<int[]>

1 个答案:

答案 0 :(得分:3)

Appodeal.setAutoCacheNativeIcons(true); Appodeal.setAutoCacheNativeMedia(true); Appodeal.cache(this, Appodeal.NATIVE); Appodeal.setNativeAdType(Native.NativeAdType.Auto); Appodeal.setNativeCallbacks(new NativeCallbacks() { @Override public void onNativeLoaded() { Log.d("Appodeal", "onNativeLoaded"); } @Override public void onNativeFailedToLoad() { Log.d("Appodeal", "onNativeFailedToLoad"); } @Override public void onNativeShown(NativeAd nativeAd) { Log.d("Appodeal", "onNativeShown"); } @Override public void onNativeClicked(NativeAd nativeAd) { Log.d("Appodeal", "onNativeClicked"); } }); NativeAd nativeAd = Appodeal.getNativeAds(1).get(1); NativeAdViewNewsFeed nav_nf = (NativeAdViewNewsFeed) findViewById(R.id.native_ad_view_news_feed); nav_nf.setNativeAd(nativeAd); 采用引用类型数组,而不是原始类型。

因此,当您调用Arrays.asList时,采用的引用类型为Arrays.asList(int[])(数组类型),这就是为什么结果为int[]的原因。

List<int[]>是引用类型,它解释了为什么Integer是返回类型。