Java泛型不允许扩展Exception和Throwable类
转自:
http://www.java265.com/JavaCourse/202205/3593.html
泛型程序设计(generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。Ada、Delphi、Eiffel、Java、C#、F#、Swift 和 Visual Basic .NET 称之为泛型(generics);ML、Scala 和 Haskell 称之为参数多态(parametric polymorphism);C++ 和 D称之为模板。具有广泛影响的1994年版的《Design Patterns》一书称之为参数化类型(parameterized type)
下文笔者讲述Java泛型类扩展注意事项,如下所示
java泛型类进行从Exception和Throwable类扩展 例:下面的定义方式"不会被允许" //The generic class InfoClass<T> may not subclass java.lang.Throwable class InfoClass<T> extends Exception {} //The generic class InfoClass<T> may not subclass java.lang.Throwable class InfoClass1<T> extends Throwable {}
例:
不允许方法捕获类型参数的实例 public static <T extends Exception, J> void execute(List<J> jobs) { try { for (J job : jobs) {} // compile-time error //Cannot use the type parameter T in a catch block } catch (T e) { // ... } } 类型参数在throws子句中是允许的 class InfoClass<T extends Exception> { private int t; public void add(int t) throws T { this.t = t; } public int get() { return t; } }