在应用程序中,我使用 SharedPrefernces 来保存/加载(序列化/反序列化)一些对象。
这是反序列化代码:
private void loadData() {
String str = sharedPreferences.getString(PREF_TAG, null);
byte[] bytes = Base64.decode(str, Base64.DEFAULT);
try {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
ObjectInputStream input = new ObjectInputStream(bais);
arrayOfObjects = (ArrayList<MyObject>) input.readObject();
} catch (Exception e) {
Log.i("BUG", "error decoding serialized objects: " + e.toString());
}
if (arrayOfObjects == null) {
Log.i("BUG", "serious problem!");
}
}
但是每当我编译这个项目时,就会出现以下行:
arrayOfObjects = (ArrayList<MyObject>) input.readObject();
发出警告,指出包含此方法的类“使用未经检查或不安全的操作。”
如何消除此警告或更改代码以使其更安全?
最佳答案
在这种情况下,会显示 warinig,因为您直接解析
的结果input.readObject();
它将一个 Object 类型的对象(非常通用)返回到 ArrayList 中,编译器会尝试告诉你,它可以是任何其他类型的对象。
在我看来,如果代码中的指令始终返回 ArrayList,那么这不是一个重要的警告,因此我将添加到您的方法定义中。
@SuppressWarnings("unchecked")
关于java - 不安全或未经检查的操作警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52163688/