千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:郑州千锋IT培训  >  行业资讯  >  Java培训入门课程之泛型必备知识点汇总

Java培训入门课程之泛型必备知识点汇总

来源:千锋教育
发布人:Java培训学员
时间: 2019-01-16 16:21:00

  经过了千锋郑州Java培训第一阶段的学习,我对Java有了一定程度的了解。最近学习的泛型也是学习的重难点,接下来我就简单总结相关知识点,以便加深印象。

  泛型的基本作用

  1.约束在集合中保存的数据类型

  2.避免代码中没有必要的强制类型转换

  泛型在方法中使用

  当前方法使用了自定义泛型T,这里在调用方法时,会根据传入的参数类型来约束泛型的具体对应类型

  格式:

  public static 返回值类型[可以使用泛型] 方法名(形式参数列表必须使用泛型) {

  // 可以使用

  }

  泛型在类中的使用

  泛型在类中使用的注意事项:

  1. 在类名声明的一个自定义泛型占位符,是通过【创建对象】来约束对应的具体数据类型,并且会影响到在类内所有使用到自定义泛型的【非静态成员方法】。

  2. 如果在创建当类对象时没有约束自定义泛型对应具体数据类型,那么所有类内使用到该自定义泛型的【非静态成员】都是对应Object类型。

  3. 为什么静态方法不能使用类名上声明的泛型?

  类声明的泛型,对应具体数据类型,是通过创建对象来进行约束的。但是static修饰的静态成员方法是在类文件加载,是已经存在于内存,此时并没有存在类对象,无法对泛型进行数据类型约束。JVM无法确定泛型的具体类型,所以无法使用。

  4. 静态成员方法使用自定义泛型,可以自娱自乐,自己声明。这里建议,在静态成员方法使用的泛型名字不要和类名声明的一致,虽然没有语法错误,但是会导致代码阅读性比较差。

  格式:

  class 类名<无意义自定义泛型占位符,一个大写的英文字母> {

  // 在类内的非静态成员方法可以使用自定义泛型

  public E getType(E e) {

  return e;

  }

  //静态成员方法需要重新定义,不在通过创建类对象约束数据类型,而是和泛型在方法中约束一样通过传入参数的数据类型来约束泛型。

  public static T testStatic(T t) {

  return t;

  }

  }

  泛型在接口中的使用

  接口可以看做是一个特殊的类,用interface、implements不能使用class进行声明。接口中的方法声明、实现类声明要一致。接口中的泛型也是通过创建类对象来进行约束,所以不能使用静态成员。

  格式:

  interface 接口名<自定义泛型占位符> {

  // 接口内的成员变量,能不能使用自定义泛型?

  接口中的成员变量不能是引用接口声明的自定义泛型,

  1. 因为缺省属性中包含static,静态,无法确定数据类型

  2. 无法确定数据类型,那么不能确定使用什么数据类型的数据进行初始化操作,因为存在final修饰

  }

  实现类有两种方式,遵从带有自定义泛型的接口

  * 1.freedom

  * 2.规规矩矩

  * 在声明位置,声明了和接口一致的自定义泛型

  class TestA<E> implements A<E>{

  @Override

  public E getE(E e) {

  // TODO Auto-generated method stub

  return e;

  }

  @Override

  public void print(E e) {

  System.out.println(e);

  }

  }

  遵从接口,已经确定对应的具体数据类型是什么类型,从而该类实现接口中的方法

  * 凡是使用到泛型的位置都是确定的数据类型。调用方法时和普通方法调用一样直接调用,不用再加泛型。

  class TestB implements A<Integer> {

  @Override

  public Integer getE(Integer e) {

  return e;

  }

  @Override

  public void print(Integer e) {

  System.out.println(e);

  }

  }

  泛型在创建类对象时

  eg:ArrayList<String> array = new Arraylist<String>;

  在类中使用泛型,需要创建对象时来约束数据类型,也可以不约束ArrayList array = new ArrayList();则通过该类对象调用方法的数据类型是Object。

  面对类中使用,在创建类对象时约束数据类型,从而约束类内数据类型。

  面对接口中使用,在创建类对象时约束数据类型,从而约束接口实现类数据类型,实现类约束接口的数据类型。接口约束接口内的实现方法数据类型。从而约束实现类中的方法数据类型。

  泛型的上下限

  <? extends E>//上限

  <? super E>//下限

  综合来看,泛型的知识点其实并不难理解,重要的是能够在项目中进行运用,多敲代码才能够将泛型熟练掌握。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

大数据培训要花多少钱

2023-04-12

计算机前端怎么学

2023-04-12

大数据都需要学什么?难不难

2023-03-30

最新文章NEW

javaee是前端还是后端,都学什么

2023-03-24

it前端是做什么的

2023-03-24

大数据培训要多久?你了解多少

2023-03-09

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>