【问题标题】:Replacing Map<String, Map<String, List<String>>> with Short type将 Map<String, Map<String, List<String>>> 替换为 Short 类型
【发布时间】:2020-01-27 15:43:57
【问题描述】:

我有一些 Map 0f Map 0f List

我为它创建了这样的界面

public interface ShortName extends Map<String, Map<String, List<String>>>

但是当我尝试实例化真实对象时,它给了我ClassCastExcpetion

ShortName testObj = (ShortName) new HashMap<String, Map<String, List<String>>>();

有没有办法为 Map 制作短类型

【问题讨论】:

  • 没有。 Java 中没有类型别名。

标签: java


【解决方案1】:

Java 没有类型别名的概念(请参阅 This question),但是您可以创建一个不同类型的新类,以扩展您的 Map

class NewType extends HashMap<String, Map<String, List<String>>>

但这不是该类型的“速记”,它完全是一种新类型 - 所以强制转换不起作用等等。

【讨论】:

    【解决方案2】:

    这是一种让速记部分发挥作用的方法。您需要实现 ShortName 才能使 ShortName 演员工作。

    你可以public static class NewType extends HashMap&lt;String, Map&lt;String, List&lt;String&gt;&gt;&gt; implements ShortName {}。然后你可以像ShortName testObj = (ShortName) new NewType();中那样使用对ShortName的强制转换

    import java.util.Map;
    import java.util.HashMap;
    import java.util.List;
    
    public class MyClass {
        public static void main(String args[]) {
    
            ShortName testObj = (ShortName) new NewType();
            System.out.println("ok");
        }
    
        public interface ShortName extends Map<String, Map<String, List<String>>> {
    
        }
    
        public static class NewType extends HashMap<String, Map<String, List<String>>> implements ShortName {}
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2015-11-21
      • 2020-04-01
      • 2021-12-21
      • 1970-01-01
      • 2020-03-17
      相关资源
      最近更新 更多