【发布时间】:2021-07-17 00:08:53
【问题描述】:
在 Android 中,我正在练习 recycling view,我注意到当我 将 String 类型数组转换为 Integer 类型列表时,它工作正常以及我放入将字符串类型列表转换为整数类型 ArrayAdapter 工作正常。
String[] words = {"One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten"};
List<Integer> listOfWords = new ArrayList(Arrays.asList(words));
ArrayAdapter<Integer> adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,listOfWords);
ListView listView = (ListView) findViewById(R.id.list);
listView.setAdapter(adapter);
【问题讨论】:
-
您使用的是原始类型(例如
new ArrayList()而不是new ArrayList<String>)。那些有效地破坏了通用类型系统,不应该使用。 -
但没有通用 List
listOfWords @Joachim Sauer -
是的,此时
<Integer>已经是一个谎言:它确实包含字符串,但是由于原始类型,编译器不会抱怨(除非您使用原始类型:您 确实收到了警告,不是吗?但你厚颜无耻地忽略了它)。 -
使用泛型实例是个好习惯吗?
-
“通用实例”是什么意思?如果您的意思是
ArrayList<Foo>而不是ArrayList:是的,绝对是。使用原始类型(即没有<Foo>的类型)仅允许向后兼容古代代码,主动破坏类型系统并在使用时产生警告(您确实看到了编译器警告,不是吗?)。所有这些都在上面链接的问题/答案中进行了解释。
标签: java android list android-recyclerview android-arrayadapter