Java - 泛型

泛型的基本概念

泛型就是将类型作为一个参数来指定,有了泛型后类型不再是不可变的,可以由泛型参数来指定
泛型是JDK5.0中一个最重要的特征,
	泛型可以让我们不使用强制类型转化和运行时最小地抛出ClassCaseException的可能
泛型标识符
	E(K,V)表示集合,K键类型,V值类型
	T,U,S表示任意类型

限制泛型的类型

public class MyGeneric<T> {}
	表示T继承Object,相当于,<T extends Object>{}
public class MyGeneric<T extends List>{}
	表示T只能是List子接口或者子类
public class MyGeneric<T extends List&Map>{}
	表示T只能是List子接口或者子类或者Map子接口或者子类
ArrayList<Object> = new Array<String>
	表面看起来String可以放入到Object,其实不行
	因为Object列表中可以放入任何对象,而String只能放入字符串
public class MyGeneric<?> {}
	?是通配符,表示可以接受任意具体类型
	泛型通配符只能用于引用声明,不可以创建对象
		ArrayList<?> al= new ArrayList<?>
	泛型引用不可以调用使用了泛型参数的方法
public class MyGeneric<T super List>{}	
	表示T只能是List父类或者父接口

<T extends List>和<? extends List>的区别

<T extends List>是定义类时就确定了T的类型是List的子接口或者子类
<? extends List>是定义类时可以不确定T的类型,而是在使用的时候确定引用可以指向什么类型

泛型案例

package com.itlwc;

public class MyGeneric<T1,T2,T> {
	private T1 foo1;
	private T2 foo2;
	private T[] fooArray;

	public T1 getFoo1() {
		return foo1;
	}

	public void setFoo1(T1 foo1) {
		this.foo1 = foo1;
	}

	public T2 getFoo2() {
		return foo2;
	}

	public void setFoo2(T2 foo2) {
		this.foo2 = foo2;
	}

	public T[] getFooArray() {
		return fooArray;
	}

	public void setFooArray(T[] ArrfooArrayay) {
		this.fooArray = ArrfooArrayay;
	}
	public static void main(String[] args) {
		MyGeneric<Boolean,Integer,String> foo = new MyGeneric<Boolean,Integer,String>();
		String[] str = { "a", "b", "c" };
		foo.setFoo1(true);
		foo.setFoo2(123);
		foo.setFooArray(str);
	}
}

方法中使用泛型

package com.itlwc;

public class Test {
	//自定义泛型方法
	public static <T> T getLast(T[] a){
		//返回最后一个元素
		return a[a.length-1];
	}
	public static void main(String[] args) {
		String[] str = {"a","b","c"};
		System.out.println("数组最后一个元素为: "+Test.<String>getLast(str));
		Integer[] i = {1,2,3};
		System.out.println("数组最后一个元素为: "+Test.<Integer>getLast(i));
	}
}
/*
打印结果:
	数组最后一个元素为: c
	数组最后一个元素为: 3
*/


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值