【问题标题】:Java generics: getting a subclass of ExceptionJava 泛型:获取 Exception 的子类
【发布时间】:2022-01-18 00:21:14
【问题描述】:

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

我也有一个 ExceptionHandler 类

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 对象的实例并将自定义异常添加到列表时,我遇到编译错误“ExceptionHandler 不适用于参数 (FileNotFoundException)"

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

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

并通过以下方式调用函数:

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

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

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

【问题讨论】:

标签: java generics exception subclass


【解决方案1】:

在这种情况下,表达你真正想要表达的内容的正确方法是写ExceptionHandler&lt;Exception&gt;,而不是ExceptionHandler&lt;? extends Exception&gt;

您可能会由此得出结论,ExceptionHandler 不应该是通用的,而应该只有一个 List&lt;Exception&gt;。这取决于您的用例。

【讨论】:

  • 如果我完全使用非泛型类,由于某种原因它仍然无法编译,它不会将我的异常识别为 Exception 的子类,我会尝试一些东西并报告!
猜你喜欢
  • 2011-05-11
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 2021-02-02
相关资源
最近更新 更多