繁体   English   中英

将子类型添加到通用列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM