ERN*_*ERN 5 java android-studio
这有什么问题?看到代码和警告信息,任何人都可以详细说明.
public void chooseBreakfast() {
ArrayAdapter planAdapter1 = new ArrayAdapter(this,
android.R.layout.simple_spinner_item, new Food[]{
new Food(1, "Toast"),
new Food(99, "Cereal"),
new Food(53, "Fruit"),
new Food(153, "Yogurt")
});
Run Code Online (Sandbox Code Playgroud)
警告消息 - 未经检查的调用'ArrayAdapter(Context,int,T [])'作为原始类型'android.widget.ArrayAdapter'的成员少...(Ctrl + F1)
JDK 5.0 only. Signals places where an unchecked warning is issued by the compiler, for example:
void f(HashMap map) {
map.put("key", "value");
}
Run Code Online (Sandbox Code Playgroud)
编译器会警告您有关raw 的用法ArrayAdapter.您应该使用一个通用 ArrayAdapter的
ArrayAdapter<Food> planAdapter1 = new ArrayAdapter<Food>(this,
android.R.layout.simple_spinner_item, new Food[]{
new Food(1, "Toast"),
new Food(99, "Cereal"),
new Food(53, "Fruit"),
new Food(153, "Yogurt")
});
Run Code Online (Sandbox Code Playgroud)
请注意,如何ArrayAdapter定义类及其构造函数.
public class ArrayAdapter<T> extends BaseAdapter ... { // T = generic type
public ArrayAdapter(Context context, int resource, T[] objects) {
init(context, resource, 0, Arrays.asList(objects));
}
...
}
Run Code Online (Sandbox Code Playgroud)
它们使用T简单ArrayAdapter()初始化忽略传递的泛型类型参数.因此,警告.传递类型的好处T是你摆脱了不必要的强制转换,你的代码变得更加类型安全.
对于例如,调用ArrayAdapter#getItem()一个对原料适配器将返回Object,并要求你扔在Food你自己.该generic适配器将返回的实际类型Food自动.
| 归档时间: |
|
| 查看次数: |
5576 次 |
| 最近记录: |