当前位置: 首页 > news >正文

[ java泛型 ] 只闻其名---->“浅浅“了解

目录

1.为什么使用泛型

2.什么是泛型

3.泛型类

4.继承泛型类

5.实现泛型接口


1.为什么使用泛型

       早期的Object类型可以接收任意的对象类型,但是在实际的使用中,存在类型转换的问题. 也就存在着隐患,所以Java提供了泛型来解决这个安全问题

2.什么是泛型

        泛型是“参数化类型” , 在没有为集合定义泛型< >时,可以存储任意的类型 , 一个集合中存储多种类型的数据时,存储没有问题 , 但是对后续的处理造成很大的不便,这时需要 判断类型和向下转型

package fanxing;
import java.util.ArrayList;public class Demo {public static void main(String[] args) {//没有使用泛型,可以储存各种类型的数据ArrayList arrayList = new ArrayList();arrayList.add(5);arrayList.add("中国");arrayList.add(true);//使用泛型,可以限制要储存的类型数据ArrayList<Integer> arrayList1 = new ArrayList<>();arrayList1.add(1);arrayList1.add(5);arrayList1.add(6);}
}

3.泛型类

    (1)定义:

        泛型用于类的定义中,被称为泛型类。通过泛型可以完成对一组类的操作

    (2)注意:

          泛型的类型参数只能是类类型(大写的),
          泛型的类型参数可以有多个
          如果没有定义具体的类型,默认为Object类

         T (type类型)  可以为任意标识符 例如 E (element元素)  V (value值)  K (key键)
 

package fanxing;//<泛型>
public class Student<T,C> {private String name ;//泛型定义成员变量private T age;private C gender;public String getName() {return name;}public void setName(String name) {this.name = name;}public T getAge() {return age;}public void setAge(T age) {this.age = age;}public C getGender() {return gender;}public void setGender(C gender) {this.gender = gender;}public Student(String name, T age, C gender) {this.name = name;this.age = age;this.gender = gender;}}
package fanxing;
public class Text1 {public static void main(String[] args) {//Student<类型>  类型只能是类类型(大写的)Student<Byte,Character> student = new Student("jim",12,'男');student.getAge();//不定义泛型时,默认继承Objcet类Student student1 = new Student("tom",15,'女');student1.getAge();}
}

  4.继承泛型类

  两种方法:

  1.当一个类继承泛型时,子类和父类都继续定义为泛型,之后再给定子类泛型的类型

  2.子类不是泛型类时,需要明确父类的泛型类型

  举例:

package fanxing;
//B类是泛型类
public class B1<T> {T age;
}

 1.当一个类继承泛型时,子类和父类都继续定义为泛型,之后再给定子类泛型的类型

package fanxing;
//子类和父类都是泛型类
public class A1<T> extends B1<T> {public static void main(String[] args) {A1<Integer> a =new A1();//给定子类泛型类型}
}

  2.子类不是泛型类时,需要明确父类的泛型类型

package fanxing;
//子类不是泛型类时,需要明确父类的泛型类型
public class A2 extends B1<Integer>{public static void main(String[] args) {A2 a = new A2();}
}

5.实现泛型接口

    泛型接口与泛型类的定义及使用基本相同

举例:

1.子类和父类都是泛型类

class A<T> implements Demo<T>{ }

2.子类不是泛型类,父类要明确泛型的数据类型

public class A implements Demo<String> { }

http://www.dtcms.com/a/304148.html

相关文章:

  • Java面试宝典:MySQL中的锁
  • 如何在在NPM发布一个React组件
  • Kafka运维实战 16 - kafka 分区重新分配【实战】
  • numpy瑞士军刀 第三卷:实战演练 第七章 组合大阵
  • 【C++算法】77.优先级队列_数据流的中位数
  • Day23-二叉树的层序遍历(广度优先搜素)
  • React 图标库发布到 npm 仓库
  • 试用SAP BTP 02C:试用SAP HANA Schemas HDI Containers
  • 构建特定领域的大模型
  • OV IP证书如何满足PCI DSS要求
  • 网络通信基础(一)
  • 第十六章 Java基础-拼图小游戏
  • 测试自动化不踩坑:4 策略告别 “为自动化而自动化”
  • BERT和GPT和ELMO核心对比
  • vue3插槽详解
  • Python之禅
  • mac 字体遍历demo
  • 《林景媚与命运解放者》
  • OpenCV 学习探秘之四:从角点检测,SIFT/SURF/ORB特征提取,目标检测与识别,Haar级联分类人脸检测,再到机器学习等接口的全面实战应用与解析
  • MySQL(配置)——MariaDB使用
  • 2025北京师范大学数学分析考研试题
  • 15-C语言:第15~16天笔记
  • FreeRTOS在中断上下文中设置事件组,调度很慢的的解决方法
  • 智慧工地系统:科技如何重塑建筑现场?
  • macOS “Sploitlight“漏洞曝光:攻击者可窃取Apple Intelligence缓存数据
  • 用动态的观点看加锁
  • 新升级超值型系列32位单片机MM32G0005
  • C++类中动态内存分配注意手册
  • python新手,学习计划
  • 每日一题7.29