Java泛型不允许扩展Exception和Throwable类

打印 上一主题 下一主题

主题 899|帖子 899|积分 2697

转自:
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泛型类扩展注意事项,如下所示
  1. java泛型类进行从Exception和Throwable类扩展
  2. 例:下面的定义方式"不会被允许"
  3.    //The generic class InfoClass<T> may not subclass java.lang.Throwable
  4. class InfoClass<T> extends Exception {}
  5. //The generic class InfoClass<T> may not subclass java.lang.Throwable
  6. class InfoClass1<T> extends Throwable {}
复制代码
例:
  1. 不允许方法捕获类型参数的实例
  2. public static <T extends Exception, J>
  3.    void execute(List<J> jobs) {
  4.       try {
  5.          for (J job : jobs) {}
  6.          // compile-time error
  7.          //Cannot use the type parameter T in a catch block
  8.       } catch (T e) {
  9.          // ...
  10.    }
  11. }
  12. 类型参数在throws子句中是允许的
  13. class InfoClass<T extends Exception>  {
  14.    private int t;
  15.    public void add(int t) throws T {
  16.       this.t = t;
  17.    }
  18.    public int get() {
  19.       return t;
  20.    }   
  21. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

熊熊出没

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表