java泛型类和泛型方法,JAVA 泛型

  java泛型类和泛型方法,JAVA 泛型

  JAVA中大致有三种基本的泛型语法元素:限制泛型的可用类型、使类型成为通配符和继承泛型。下面将介绍这三种语法。

  1.限制可用的泛型类型

  当我们定义一个泛型类时,默认的是任何类型都可以用来实例化泛型类中的类型容器。我们也可以指定一个类型,这样这个泛型类只能通过这个类型或它的子类,或者实现这个接口的类来实例化类型容器。

  当我们定义一个类型容器时,我们使用extends关键字来限制它。例如,我们可以这样定义一个泛型类:

  公共类限制演示T扩展列表

  }

  这意味着由类型保持器T表示的类型必须是实现列表接口的类型。因此,我们将生成LimitDemo类的一个实例,如下所示:

  limit demo ArrayList demo=new limit demo ArrayList

  因为ArrayList是实现List接口的类,所以这样写是合法的。如果它不是实现List接口的类:

  编译器将报告错误“字符串类型不在T的范围内”:

  事实上,当我们不使用extends关键字来限制泛型类对象时,编译器默认Object类下的所有子类都可以实例化类型持有者。即:

  公共类限制演示T {}

  相当于:

  如果有引用名demo,我们希望demo既可以引用WildDemo字符串类型,也可以引用WildDemo整数类型。如何实施?

  如果没有通配符,我们只能定义两个变量,一个是WildDemo String demo1,另一个是WildDemo Integer demo2,来保存对这两类实例的引用。如果使用通配符,可以这样写:

  //使用通配符“?”

  WildDemo?演示;

  demo=新的WildDemo整数

  demo=新的WildDemo字符串

  但是应该注意的是,

  类型通配符声明的名称所引用的对象不能添加信息,只能获取或移除对象的信息。示例:

  如果一个子类希望保留父类的类型持有者T1,T2,那么父类上声明的类型持有者的数量在继承时必须写完整,也就是子类T1,T2)。如果子类没有保留类型持有者,继承的T1和T2将自动成为对象类型。

  在实际应用中,要以简洁易读为原则定义泛型类,尽量避免定义多个复杂的泛型。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: