有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

正在播放ArrayList的Java cast<Map>

很抱歉,我对Java不是很有经验。 我使用eclipse作为IDE。 Eclispe抱怨未经检查的演员阵容,我无法理解。 请参考snipet代码。 一般来说,如何做到这一点

public Liberty2Server(ArrayList<Map<String,String>> libertySourceFiles , String basePath) throws FileNotFoundException , IllegalArgumentException {
    // check input file path
    for( Object map : libertySourceFiles) {
        Map<String,String> mp = (Map<String,String>) map ;  // <==Eclipse complains here: Unchecked cast from Object to Map<String,String>

欢迎任何提示

罗尔夫


共 (3) 个答案

  1. # 1 楼答案

    Eclipse会抱怨,因为您想将Object转换为Map<String, String>。将运行变量map的类型更改为Map<String, String>,一切都会好起来。你甚至不需要变量mp

  2. # 2 楼答案

    这意味着您正在执行编译器无法检查是否安全的强制转换

    它警告你必须检查它是否安全

    一个更好的解决方案是通过使用

    for(Map<String, String> mp : libertySourceFiles) {
    
  3. # 3 楼答案

    您可以更改for循环,并在集合中使用显式类型:

    for(Map<String,String> map : libertySourceFiles) {
        Map<String,String> mp = map; //probably not needed any more
    }