Java 泛型:获取 Exception 的子类

Java generics: getting a subclass of Exception

我最近一直在学习 java 并且了解了泛型和异常 我有多个 class 扩展异常,因为我的项目中需要一堆自定义异常 例如 FileEmptyException:

而且我还有一个 ExceptionHandler class

public class FileEmptyException extends Exception {


public FileEmptyException() {
    super();
    // TODO Auto-generated constructor stub
}

}

 public class ExceptionHandler<Ex extends Exception> {



List<Ex> ls;



public ExceptionHandler()
{
    
    ls = new ArrayList<>();
}
public void addException(Ex ex)
{
    ls.add(ex);
}

}

当我尝试创建我的 ExceptionHandler 对象的实例并将自定义异常添加到列表时,我遇到了编译错误“The method addException(capture#1-of ? extends Exception) in the type ExceptionHandler 不适用于参数 (FileNotFoundException)"

我通过以下方式实例化了对象:

private ExceptionHandler<? extends Exception> EH = new ExceptionHandler<>();

并按以下方式调用函数:

        if(!s.hasNext())
        EH.addException(new FileEmptyException());

我的主要问题是我尝试做的事情是否可行(我假设是的),如果可行,正确的方法是什么?

在此先感谢并为我自己的无知感到抱歉!

在这种情况下,表达你真正想表达的内容的正确方式是写ExceptionHandler<Exception>,而不是ExceptionHandler<? extends Exception>

您可能由此得出结论,ExceptionHandler 不应该 是通用的,而应该只是 List<Exception>。这取决于您的用例。