泛型

泛型是jdk1.5的新特性,它的语法格式为<>,可以用在类名后面和方法后面,用在类名后表示这是一个泛型类,用在方法后表示泛型方法,一般在里面使用字母T作为占位符,表示引用类型,这个T可以创建变量,用在方法里面可以作为参数,在方法体里面还可以做方法的返回值。但是这个T无法实例化!

注意事项:

  1. 当其他类创建泛型类的实例化对象的时候,必须给定一个泛型类的类型,这个类型只能是引用类型,
  2. 实例化以后,也可以直接对占位符赋值,它属于什么类型取决于你实例化对象的时候给定的类型
  3. 不同泛型类型之间不能相互赋值

泛型的好处:

  1. 提高代码的重用性
  2. 防止类型转换异常,提高代码的安全性

泛型类代码:

public class Demo03<T> {
    T t;
    public T getT() {
        return t;
    }
  	public void show(T t){
        System.out.println(t);
    }
class Demo04{
    public static void main(String[] args) {
        Demo03<String> demo03 = new Demo03<String>();
        demo03.getT();
        demo03.show("好像懂了");
        demo03.getT();

    }
}

泛型接口:

我们也可以在定义接口的时候使用泛型,用法是在接口名称后面加上,这样这个接口就成为了一个泛型接口,在写实现类的时候,必须要给这个T赋值决定它的实际类型是什么,或者如果在写实现类的时候不想定义它的实际类型,那么必须把这个实现类也变为泛型类

public interface fanxing<T>{
     T server(T t);
    
}
public class shixian inmplents fanxing<String>{
    //重写接口的方法,使用这个方法的时候必须给T传递实际参数
    public T server(String t){
        System.out.println(t);
        return t;
    }
}
public class shixian2<T> inmplents fanxing<T>{
    //重写接口的方法,这种实现类也是泛型的类要调用方法的话就在调用的类里赋实际值
    public T server(T t){
        System.out.println(t);
        return t;

泛型方法:

语法是放在方法返回值类型的前面,在调用泛型方法的时候和普通的方法没有区别,由在调用泛型方法的时候给定数据的类型决定,代码:

public class fanxing{
    //泛型方法
    public <T>T server(T t){
        System.out.println(t);
        return t;
    }
}
class fangfa{
   public static void main(String [args]){
       fanxing f = new fanxing();
       f.server(123);//泛型的类型变为integer类型
       f.sever("你好中国");//泛型的类型变为String类型
   }
}

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

特点

  1. 编译时即可检查,而非运行时抛出异常。
  2. 访问时,不必进行类型转换。
  3. 不同泛型之间的引用不能相互赋值,泛型不存在多态。

它的用法就是在创建集合的时候给一个,这个T在创建的时候需要给定一个类型,它决定我们这个集合是什么类型,如果我们给定一个String类型,那么其他类型的数据就无法添加到这个泛型集合。

class jihe{
    public static void main (String [args]){
        Arraylist<String> arraylist = new Arraylist<String>();
        arraylist.add("a");
        arraylist.add("b");
    }
}
posted @   萧何i  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示