Java 处理LinkedHashMap的泛型<;字符串,LinkedHashMap>;

Java 处理LinkedHashMap的泛型<;字符串,LinkedHashMap>;,java,generics,collections,snakeyaml,Java,Generics,Collections,Snakeyaml,我在泛型方面从来没有那么好,但我使用了SnakeYaml。 有没有办法让我修复这个代码 public class MyService{ private static Map<String, LinkedHashMap> myYamlMap; public static void filter(Map<String, String>){ //myYaml map reads the YAML File using SnakeYaml //Snake Yam

我在泛型方面从来没有那么好,但我使用了SnakeYaml。 有没有办法让我修复这个代码

public class MyService{
private static Map<String, LinkedHashMap> myYamlMap;

public static void filter(Map<String, String>){
    //myYaml map reads the YAML File using SnakeYaml
    //Snake Yaml returns data in this format <String,LinkedHashMap>
    Yaml yaml = new Yaml(); 
    Object object = yaml.load(reader); 
    Map<String, LinkedHashMap> myYamlMap = (Map<String, LinkedHashMap>)object; 

    LinkedHashMap<String, LinkedHashMap> mainMap = (LinkedHashMap<String, LinkedHashMap>)myYamlMap.get("sample");
}
公共类MyService{
私有静态映射myYamlMap;
公共静态无效过滤器(Map){
//myYaml映射使用SnakeYaml读取YAML文件
//Snake Yaml以这种格式返回数据
Yaml Yaml=新的Yaml();
对象=yaml.load(读卡器);
Map myYamlMap=(Map)对象;
LinkedHashMap mainMap=(LinkedHashMap)myYamlMap.get(“示例”);
}
} 并且不受编译时警告的影响

Multiple markers at this line
    - Line breakpoint:MyService [line: 69] - filter(Map<String, String>)
    - Type safety: Unchecked cast from LinkedHashMap to LinkedHashMap<String,LinkedHashMap>
    - LinkedHashMap is a raw type. References to generic type LinkedHashMap<K,V> should be 
     parameterized
    - LinkedHashMap is a raw type. References to generic type LinkedHashMap<K,V> should be 
     parameterized
此行有多个标记
-行断点:MyService[行:69]-过滤器(映射)
-类型安全:未选中从LinkedHashMap到LinkedHashMap的强制转换
-LinkedHashMap是原始类型。对泛型类型LinkedHashMap的引用应为
参数化
-LinkedHashMap是原始类型。对泛型类型LinkedHashMap的引用应为
参数化
Snakeyaml..在其构造中使用LinkedHashMap,我想摆脱角色转换。

鉴于您的代码:

private static Map<String, LinkedHashMap> myYamlMap;
LinkedHashMap<String, LinkedHashMap> mainMap = (LinkedHashMap<String, LinkedHashMap>)myYamlMap.get("sample");
在这里使用
get
似乎意味着
myYamlMap
应该

private static Map<String, Map<String, Map<Key, Value>> myYamlMap;
myYamlMap = new LinkedHashMap<String, Map<String, Map<Key,Value>>>;
Map<Key,Value> temp = new LinkedHashMap<Key,Value>();
temp.put(k1, value1);
myYamlMap.put("sample", temp);

使用
Map
接口的原因是,在代码中没有任何地方使用特定于
LinkedHashMap
的方法,因此声明应该只使用
Map
,除非实例化映射。

为什么不让值具有类型参数
Map
尝试了相同的问题。好的。最后一个LinkedHashMap也必须是typedCan您可以共享您的代码伙伴吗?这样我就可以查看我的代码了?。我没有任何代码。我的意思是,对
LinkedHashMap
的所有引用必须具有适当的类型参数。我已编辑代码以显示值。你能再查一下吗。我已经清除了大部分杂物。
private static Map<String, Map<Key, Value>;
myYamlMap = new LinkedHashMap<String, Map<Key, Value>>;
myYamlMap.put("key1", new LinkedHashMap<Key,Value>();
LinkedHashMap<String, LinkedHashMap> mainMap = (LinkedHashMap<String, LinkedHashMap>)myYamlMap.get("sample");
private static Map<String, Map<String, Map<Key, Value>> myYamlMap;
myYamlMap = new LinkedHashMap<String, Map<String, Map<Key,Value>>>;
Map<Key,Value> temp = new LinkedHashMap<Key,Value>();
temp.put(k1, value1);
myYamlMap.put("sample", temp);
Map<String, Map<Key,Value>> mainMap = myYamlMap.get("sample");