java中的泛型入门

1.什么是泛型?

            泛型就是未定义的类型,其实泛型编译之后就是不存在的了。

2.泛型类模板

1)广泛通用的类型.泛型类只适用于非静态方法。

2)代码模板中类型不确定,谁调用该段代码,谁指明类型是什么。

3)泛型不存在继承的关系(错误如). List<Object> list = new ArrayList<String>();//错误的。

public class GeneriTypeDemo {
	public static void main(String[] args) {
		
		GeneriType<String> type1 = new GeneriType<>();
		type1.setX("这里只能设置String类型");
		String str1 = type1.getX();
		System.out.println(str1);
		GeneriType<Integer> type2 = new GeneriType<>();
		type2.setX(new Integer(2));
		Integer num = type2.getX();
		System.out.println(num);

	}

}

class GeneriType<T> {
	private T x;
	private T y;

	public T getX() {
		return x;
	}

	public void setX(T x) {
		this.x = x;
	}

3.泛型方法:在方法上声明泛型

  1)泛型类中的泛型只能适用于非静态方法,如果需要给静态方法设置泛型,此时使用泛型方法。

  2)泛型类中的泛型应该适用于整个类中多个方法,有时候只对某一个方法设置泛型即可。

  3)一般的,把自定义的泛型作为该方法的返回类型才有意义,而且此时的泛型必须是由参数设置进来的

public class GeneriTypeStaticDemo {
	public static void main(String[] args) {
		String str = doWork("1");
		Integer num = doWork(123);
	}

	public static <T> T doWork(T args) {
		T val = args;
		return val;
	}
}

4.泛型的上限和下限

1)泛型的上限和下限:用来限定元素的类型必须是X类的子类或相同,X的父类或相同.

2)?表示通配符

import java.util.ArrayList;
import java.util.List;
public class GeneriTypeLimit {
	public static void main(String[] args) {
		List<Integer> list1 = new ArrayList<>();
		doWork1(list1);

		List<Number> list2 = new ArrayList<>();
		doWork2(list2);
	}

	public static void doWork1(List<? extends Number> val) {

	}

	public static void doWork2(List<? super Number> val) {

	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值