在我的MainActivity文件中的以下代码上,我不明白为什么会出现此错误以及如何解决这些错误。我已经在Google上进行搜索,但是无法将解决方案与我的代码相关联。我也将-Xlint:unchecked传递给javac,但是也无法获得任何更明智的选择。
我刚接触Android和Java编程,并试图解决我的代码中的所有亮点。
谢谢。
未经检查的分配:“ java.util.ArrayList” 'java.util.ArrayList'更少...(Ctrl + F1)信号 编译器发出未经检查的警告的位置,用于 例如:
void f(HashMap地图){ map.put(“ key”,“ value”); }提示:将-Xlint:unchecked传递给javac以获得更多详细信息。
以未选中的身份调用“ ArrayList(Collection)” 原始类型'java.util.ArrayList'少...(Ctrl + F1)表示位置 编译器发出未经检查的警告,例如:
void f(HashMap地图){ map.put(“ key”,“ value”); }提示:将-Xlint:unchecked传递给javac以获得更多详细信息。
private void readItems() {
File filesDir = getFilesDir();
File todoFile = new File(filesDir, "todo.txt");
try {
items = new ArrayList<>(FileUtils.readLines(todoFile));
} catch (IOException e) {
items = new ArrayList<>();
}
}
答案 0 :(得分:1)
出现此问题是因为错误地使用了 generic 。您通常应该将泛型与ArrayList一起使用,以指定要存储在ArrayList中的对象的类型。
赞:
$("#datepick").datepicker();
$("#datepick").datepicker("setDate", curdate);
请检查代码中ArrayList<String> list = new ArrayList<>();
的定义。
答案 1 :(得分:0)
根本原因::您正在将ArrayList
用作Java中的泛型类型,但没有为其指定特定的类型。那就是为什么编译器显示该警告。
那么当您没有为泛型指定特定类型时会发生什么。这是一个场景。
// You want this line contains only Integer.
List list = new ArrayList<>();
// 1. Warning when add new item.
list.add(1);
list.add(2);
list.add(3);
// 2. Must cast to Integer when using.
Integer number2 = (Integer) list.get(1);
// 3. Do not prevent developers from adding non-integer type, such as String, double, boolean etc.
list.add("Four");
list.add(true);
// 4. Might throws ClassCastException and make your app crashes.
Integer number = (Integer) list.get(4);
解决方案:在尖括号<>
内为通用类型指定或传递特定类型。
// You want this line contains only Integer.
List<Integer> list = new ArrayList<>();
// If you want to declare variable first
List<Integer> items;
// Then initialize
items = new ArrayList<>();
// 1. No warning when add new item.
items.add(1);
list.add(2);
list.add(3);
// 2. No need to cast to Integer.
Integer number2 = list.get(1);
// 3. Prevent developers from adding non-integer type, such as String, double, boolean etc.
list.add("Four"); // Error when compile
list.add(true); // Error when compile
// 4. You cannot add non-integer type and no need to cast so ClassCastException never occurs.
Integer number = list.get(2);
Java中内置了许多泛型类,例如List
,ArrayList
,Map
,HashMap
,Set
,HashSet
等...