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>
。这取决于您的用例。
我最近一直在学习 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
我通过以下方式实例化了对象:
private ExceptionHandler<? extends Exception> EH = new ExceptionHandler<>();
并按以下方式调用函数:
if(!s.hasNext())
EH.addException(new FileEmptyException());
我的主要问题是我尝试做的事情是否可行(我假设是的),如果可行,正确的方法是什么?
在此先感谢并为我自己的无知感到抱歉!
在这种情况下,表达你真正想表达的内容的正确方式是写ExceptionHandler<Exception>
,而不是ExceptionHandler<? extends Exception>
。
您可能由此得出结论,ExceptionHandler
不应该 是通用的,而应该只是 List<Exception>
。这取决于您的用例。