泛型

本文深入讲解Java泛型的使用,包括编译时类型检查、泛型类与方法的定义及应用,类型通配符的使用,以及如何设定类型通配符的上限。通过实例演示了泛型在实际编程中的灵活性和安全性。

一、使用泛型实现编译时检查类型:

例:向List集合中添加元素。且指定添加的元素类型为String:

 1 import java.util.ArrayList;
 2 import java.util.List;
 3 
 4 public class Test {
 5     public static void main(String args[]){
 6         List<String> L=new ArrayList();
 7         L.add("hh");
 8         //L.add(9);添加整型编译不通过
 9     }
10 
11 }

二、允许在定义类、接口、方法时使用类型形参,而这个类型形参可以在声明变量、创建对象、调用方法时动态的指定。

 1 public class Apple<T> {
 2     private T info;
 3     public Apple(){};
 4     public Apple(T info){
 5         this.info=info;
 6     }
 7     public T get_Info(){
 8         return this.info;
 9     }
10     public void set_Info(T info){
11         this.info=info;
12     }
13     public static void main(String args[]){
14         Apple<String> a1=new Apple<>();
15         a1.set_Info("苹果");
16         System.out.println(a1.get_Info());
17         Apple<Integer> a2=new Apple<>(5);
18         System.out.println(a2.get_Info());
19     }
20 
21 }

注:从泛型类派生子类的时候,子类extends 父类  后面不能带形参,要么指定,要么不写<>,不存在“泛型类”。指定形参后,重写父类方法时,要与父类方法的返回值一样。

public class A1 extends Apple<String>{
	public String get_info(){
		System.out.println("子类重写父类的方法");
		return super.get_Info();
	}

}

 三、在使用泛型类时,应该指定实参,但是如果没有指定参数,编辑器就会出错,这时可以使用类型通配符,形如<?>

1 public static void test(Apple<?> t){
2          System.out.println(t.getClass());
3     }
public static void main(String args[]){
//		Apple<String> a1=new Apple<>();
//		a1.set_Info("苹果");
//		System.out.println(a1.get_Info());
//		Apple<Integer> a2=new Apple<>(5);
//		System.out.println(a2.get_Info());
		Apple<String> str=new Apple<>();
		test(str);
	}

四、设定类型通配符上限,例: List<String> str 表示元素类型是String 类型的List集合;

                                        List<?> list表示所有类型的List集合;

                                        List<?extends Tree> str 表示所有Tree泛型的List,也就是说传入的实参应该是Tree或者其子类。

五、泛型方法

转载于:https://www.cnblogs.com/abstract-fabulous/p/5430526.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值