首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取文件并将其内容转换为HashMap时,收到"warning:[ unchecked ] unchecked“

读取文件并将其内容转换为HashMap时,收到"warning:[ unchecked ] unchecked“
EN

Stack Overflow用户
提问于 2021-07-18 11:02:01
回答 2查看 50关注 0票数 0

我正在读取一个我之前作为HashMap。现在,我不得不再读一遍,但它给我“警告:未检查的未检查的转换”,并且它没有编译。

导致错误的代码行:

代码语言:javascript
复制
HashMap<String,String> map_stage = Utils.readObject(staging_area, HashMap.class);

staging_area是一个文件对象,它工作得很好。警告在左侧的HashMap类型和右侧的HashMap.class之间发出

警告:

代码语言:javascript
复制
  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:

代码语言:javascript
复制
    /** 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());
        }
    }

^这个方法是给我的,所以你可以假设是正确的。

编译器错误:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2021-07-20 04:31:57

我们找到了以下解决方法:

代码语言:javascript
复制
parent_commit_map =  (HashMap <String, String>) readObject(parent_commit_file) 

我不主张最好的实现,但它解决了问题。感谢大家的建议!

票数 0
EN

Stack Overflow用户

发布于 2021-07-18 12:11:44

这个问题已经在这个帖子中得到了回答。我指定了编辑后的问题中的最终代码。

代码语言:javascript
复制
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

如果您的问题仍然存在,请提供您正在测试的文件以找到替代文件。:)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68425663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档