泛型的简单使用

泛型(Generic Type),也就是通用的类型.

代码的母版,提供了代码复用的功能.说白了就是想定义一个你不清楚的类型的数据.

  1. 泛型类,直接在类上定义泛型
public class Box<K,V> 
{
	private K k;
	private V v;
	Box(K k,V v)
	{
		this.k=k;
		this.v=v;
	}
	public K getK() {
		return k;
	}
	public void setK(K k) {
		this.k = k;
	}
	public V getV() {
		return v;
	}
	public void setV(V v) {
		this.v = v;
	}
}
public class Main {
	public static void main(String[] args) {
		Box<String,Integer> b= new Box<>("a",1);
		//泛型没有继承关系,故下面的语句会报错
		//Box<Object,String> c = new Box<String,String>("a","b");
	
	}
}

    2.泛型方法

    声明一个泛型方法很简单,只要在返回类型前面加上一个类似<K,V>的形式就行了

	 public static <K, V> boolean compare(Box<K, V> p1, Box<K, V> p2) {
	        
		 return p1.getK().equals(p2.getK()) &&
	               p1.getV().equals(p2.getV());
	    }

一般当参数使用到泛型时才有价值.

    3.通配符的使用,接收数据

import java.util.ArrayList;
import java.util.List;

public class Main {
	public static void main(String[] args) {
		List<Integer> list1 = new ArrayList<>();
		doWork(list1);
		
		List<String> list2 = new ArrayList<>();
		doWork(list2);
	}
	
	private static void doWork(List<?> list){
		
	}
}

可以看到,当方法doWork()调用之前不知道需要什么样的数据类型,就可以使用通配符?

 

    4.泛型的上下限

import java.util.ArrayList;
import java.util.List;

public class Main {
	public static void main(String[] args) {
		List<Integer> list1 = new ArrayList<>();
		doWork1(list1);
		
		List<String> list2 = new ArrayList<>();
		doWork2(list2);
	}
	//上限 ?必须是Number 的子类或Number
	private static void doWork1(List<? extends Number> list){
		
	}
	//下限 ?必须是String 的父类或者String
	private static void doWork2(List<? super String> list){
		
	}
}

    5.泛型的擦除

import java.util.ArrayList;
import java.util.List;

public class Main {
	public static void main(String[] args) {
		List<Integer> list1 = new ArrayList<>();
		list1.add(1);
		
		List list2 = null;
		list2 = list1;//此时list1的泛型被擦除
		list2.add("abc");
		list2.add(111);		
		System.out.println(list2);			
	}

}

这里擦除只是简单的介绍一下,下面的这个链接写的非常的详细

点击打开链接




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值