java泛型

一、泛型概念与原理

泛型(Generics)是Java 5引入的一种新特性,允许在定义类、接口和方法时使用类型参数。泛型的主要目的是提高代码的复用性和类型安全。在编译阶段,编译器会检查泛型代码的类型正确性,从而避免了运行时类型转换错误。

二、泛型类型参数

泛型类型参数用于定义泛型类或接口。在定义泛型类或接口时,需要在类名或接口名后面添加尖括号(<>),并在尖括号内声明类型参数。例如:

public class Box<T> {  
    private T item;  
      
    public Box(T item) {  
        this.item = item;  
    }  
      
    public T getItem() {  
        return item;  
    }  
      
    public void setItem(T item) {  
        this.item = item;  
    }  
}


在这个例子中,T是一个泛型类型参数,表示Box类可以存储任意类型的对象。在使用Box类时,可以为T指定具体的类型,例如:

Box<Integer> intBox = new Box<>(123);  
Box<String> stringBox = new Box<>("Hello, world!");


三、通配符类型参数

通配符类型参数用于表示任意类型,常用于泛型方法的参数类型。通配符使用问号(?)表示,例如:

public static void printItem(Box<?> box) {  
    System.out.println(box.getItem());  
}


在这个例子中,printItem方法接受一个Box类型的参数,其中的类型参数使用了通配符。这意味着printItem方法可以处理任意类型的Box对象。需要注意的是,使用通配符类型参数时,不能对其进行修改操作(如添加、删除元素),因为具体类型未知。如果需要修改操作,可以使用有限制的通配符,例如:<? extends T> 或 <? super T>。前者表示类型参数是T或T的子类,后者表示类型参数是T或T的父类。

四、泛型方法

与泛型类类似,Java也支持泛型方法。泛型方法可以在方法声明中定义类型参数。例如:

public static <T> void swap(List<T> list, int i, int j) {  
    T temp = list.get(i);  
    list.set(i, list.get(j));  
    list.set(j, temp);  
}

在这个例子中,<T> 表示这是一个泛型方法,并且类型参数为T。通过使用泛型方法,我们可以轻松实现不同类型列表元素的交换。

五、自我理解

泛型让Java编程更加灵活和类型安全。它允许我们编写可以处理各种数据类型的代码,同时避免了重复和错误。就像有一个万能的盒子,我们可以放入各种物品,而且盒子还会确保放入的物品类型是正确的,这确实是一个非常强大的工具!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值