用short类型替换Map <String,Map <String,List <String >>>

时间:2019-09-27 10:09:59

标签: java

我有一些Map 0f Map 0f列表

我为速记创建了这样的界面

AnswerState = [
    Name: aaa, Number: bbbb
]

但是当我尝试实例化真实对象时,它会给我public interface ShortName extends Map<String, Map<String, List<String>>>

ClassCastExcpetion

有什么方法可以为Map简化类型?

2 个答案:

答案 0 :(得分:0)

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

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

但这不是该类型的“简写”,而是一种新的类型-因此强制转换将不起作用等。

答案 1 :(得分:0)

这是让速记部分工作的一种方法。您需要实现ShortName才能使ShortName强制转换起作用。

您可以执行public static class NewType extends HashMap<String, Map<String, List<String>>> 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 {}
}