加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

聊一聊Java 泛型全解

发布时间:2019-08-29 22:37:28 所属栏目:优化 来源:来一杯82年的Java
导读:副标题#e# 对于java的泛型我一直属于一知半解的,平常真心用的不多。直到阅读《Effect Java》,看到很多平常不了解的用法,才下定决心,需要系统的学习,并且记录下来。 1、泛型的概述: 1.1 泛型的由来 根据《Java编程思想》中的描述,泛型出现的动机: 有

换一个方式:

  1. public class User<K, V> { 
  2.  public void show(String k) { 
  3.  } 
  4.  public void show(V t) { 
  5.  } 

使用结果:

Java 泛型全解 - 绝对最详细

可以正常的使用5.2 不能实例化类型参数

编译器也不知道该创建那种类型的对象

  1. public class User<K, V> { 
  2.  private K key = new K(); // 报错:Type parameter 'K' cannot be instantiated directly 

5.3 对静态成员的限制

静态方法无法访问类上定义的泛型;如果静态方法操作的类型不确定,必须要将泛型定义在方法上。

如果静态方法要使用泛型的话,必须将静态方法定义成泛型方法。

  1. public class User<T> { 
  2.  //错误 
  3.  private static T t; 
  4.  //错误 
  5.  public static T getT() { 
  6.  return t; 
  7.  } 
  8.  //正确 
  9.  public static <K> void test(K k) { 
  10.  } 

5.4 对泛型数组的限制

不能实例化元素类型为类型参数的数组,但是可以将数组指向类型兼容的数组的引用

  1. public class User<T> { 
  2.  private T[] values; 
  3.  public User(T[] values) { 
  4.  //错误,不能实例化元素类型为类型参数的数组 
  5.  this.values = new T[5]; 
  6.  //正确,可以将values 指向类型兼容的数组的引用 
  7.  this.values = values; 
  8.  } 

5.5 对泛型异常的限制

泛型类不能扩展 Throwable,意味着不能创建泛型异常类

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读