JavaSE8️⃣泛型

1、泛型

泛型(Java 1.5+)

  1. 含义(本质):参数化类型,把类型作为参数传递。
  2. 语法<类型占位符>,表示一种引用类型(多个占位符以 , 分隔)。
  3. 好处
    1. 复用性。
    2. 安全性,防止类型转换异常。

2、常见形式

2.1、泛型类

  1. 语法

    访问修饰符 class 类名<类型占位符> {
    }
    
  2. 说明

    1. 不同泛型类型的对象不能相互赋值。
    2. 在泛型类中,可以使用泛型类型(如变量类型、参数类型、方法返回值类型)。
    3. 在泛型类的外部,无法直接使用泛型类型,需使用确定的引用类型

示例

  1. 定义泛型类

    public class myGeneric<T>{
        private T t;
        
        public T getT() {
            return t;
        }
        public void setT(T t) {
    		this.t = t;
        }
    }
    
  2. 使用

    // String
    myGeneric<String> mg1 = new myGeneric<String>();
    mg1.setT("tang");
    String str = mg1.getT();
    
    // Integer
    myGeneric<Integer> mg2 = new myGeneric<Integer>();
    mg2.setT(10);
    Integer num= mg2.getT();
    
    // 尝试赋值
    mg1 = mg2;	// 报错
    

2.2、泛型接口

  1. 语法

    访问修饰符 interface 接口名<类型占位符> {
    }
    
  2. 说明

    1. 不同泛型类型的对象不能相互赋值。
    2. 在泛型接口中,可以使用泛型类型(无法创建泛型静态常量)。
    3. 在接口实现类中,可以继续使用泛型,也可使用确定的引用类型
      1. 使用泛型:成为泛型类。
      2. 确定类型:所有泛型占位符替代为确定类型,成为普通类。

示例

定义泛型接口

public interface MyInterface<T> {
	String nameString="tang";
    
	T server(T t);
}
  1. 泛型实现类

    public class MyInterfaceImpl implements MyInterface<String> {
    	@Override
    	public String server(String t) {
    		System.out.println(t);
    		return t; 
    	}
    }
    
  2. 普通实现类

    public class MyInterfaceImpl2<T> implements MyInterface<T>{
        @Override
        public T server(T t) {
            System.out.println(t);
            return t;
        }
    }
    

2.3、泛型方法

  1. 语法

    访问修饰符 <T> 返回值类型 方法名(参数列表) {
    }
    
  2. 示例

    1. 定义

      public class MyGenericMethod {
      	public <T> void show(T t) {
      		System.out.println("泛型方法" + t);
      	}
      }
      
    2. 使用

      MyGenericMethod myGenericMethod=new MyGenericMethod();
      
      myGenericMethod.show("tang");
      myGenericMethod.show(200);
      myGenericMethod.show(3.14);
      

3、泛型集合

泛型集合:参数化类型、类型安全的集合,强制集合元素的类型必须一致。

特点

  1. 编译期检查元素类型,避免运行异常。
  2. 访问时无需做类型转换(拆箱)。
posted @ 2023-03-13 00:47  Jaywee  阅读(116)  评论(0编辑  收藏  举报

👇