[ 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 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 {
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 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 age;
}

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

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

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

package fanxing;
//子类不是泛型类时,需要明确父类的泛型类型
public class A2 extends B1{
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> { }

posted @ 2025-07-31 21:22  yfceshi  阅读(7)  评论(0)    收藏  举报