我有两段代码,主要重点是方法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[]>
。
答案 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
是返回类型。