[英]Adding Subtype to generic List
我正在尝试将异常添加到包含字符串作为键和异常列表作为值的 Map 中。如下所示。 我想要实现的是创建一个可以接受 Map 的通用方法,其中键为 String 和一个可以包含任何类型异常的列表,如果键是相同类型,则将异常添加到该特定列表。
public static void addToMap(Map<String,List<? extends Exception>> exceptionMap,String nodeKey ,Exception exception){
exceptionMap.computeIfAbsent(nodeKey ,K->new LinkedList<Exception>).add(exception);
注意:我可以将异常分别添加到两个不同的 util 方法中……但我希望它更通用,如上所示的单个 util 方法……
我无法将这两个不同的例外添加到通用 util 方法中,我不知道我哪里出错了......非常感谢任何帮助
此处不应使用通配符。 仅当您不关心确切类型时才使用通配符。 但是在这里,您确实关心异常列表的确切类型。 也就是说,这两个???
必须相互兼容:
void addToExceptionMap(Map<String, List<???>> exceptionMap, String errorLevel, ??? exception)
最后一个参数不能只是任何Exception
,列表的类型不能只是任何Exception
。 您不能将NullPointerException
添加到IndexOutOfRangeExceptions
列表中,可以吗? 这两种类型是相关的。
您应该在这里使用泛型:
public static <T extends Exception> void addToExceptionMap(Map<String, List<T>> exceptionMap, String errorLevel, T exception){
exceptionMap.computeIfAbsent(errorLevel,K->new LinkedList<T>()).add(exception);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.