我正在读取一个我之前作为HashMap。现在,我不得不再读一遍,但它给我“警告:未检查的未检查的转换”,并且它没有编译。
导致错误的代码行:
HashMap<String,String> map_stage = Utils.readObject(staging_area, HashMap.class);staging_area是一个文件对象,它工作得很好。警告在左侧的HashMap类型和右侧的HashMap.class之间发出
警告:
required: HashMap<String,String>
found: HashMap
Repository.java:156: warning: [unchecked] unchecked conversion
HashMap<String,String> map_stage = Utils.readObject(staging_area, HashMap.class);
^这是Utils.readObject:
/** Return an object of type T read from FILE, casting it to EXPECTEDCLASS.
* Throws IllegalArgumentException in case of problems. */
static <T extends Serializable> T readObject(File file,
Class<T> expectedClass) {
try {
ObjectInputStream in =
new ObjectInputStream(new FileInputStream(file));
T result = expectedClass.cast(in.readObject());
in.close();
return result;
} catch (IOException | ClassCastException
| ClassNotFoundException excp) {
throw new IllegalArgumentException(excp.getMessage());
}
}^这个方法是给我的,所以你可以假设是正确的。
编译器错误:
grader/submit/AGTester.java:90: error: unreported exception IOException; must be caught or declared to be thrown
Main.main(args);
^
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error发布于 2021-07-20 04:31:57
我们找到了以下解决方法:
parent_commit_map = (HashMap <String, String>) readObject(parent_commit_file) 我不主张最好的实现,但它解决了问题。感谢大家的建议!
发布于 2021-07-18 12:11:44
这个问题已经在这个帖子中得到了回答。我指定了编辑后的问题中的最终代码。
public static <T> T loadData(Class<T> expectedClass, String filename) {
T o = null;
try {
FileInputStream fi = new FileInputStream(filename);
ObjectInputStream oi = new ObjectInputStream(fi);
o = expectedClass.cast(oi.readObject());
oi.close();
fi.close();
} catch (Exception e) {}
return o;
}Casting to dynamic class crashes in method call
如果您的问题仍然存在,请提供您正在测试的文件以找到替代文件。:)
https://stackoverflow.com/questions/68425663
复制相似问题