泛型小结

本文详细介绍了Java泛型的使用原因、自定义泛型类的方法、泛型接口的定义及泛型方法的应用。通过实例展示了如何在自定义栈类中使用泛型确保类型安全,以及如何在非泛型类中定义泛型方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、泛型使用的原因

    安全:放入会自动检查,如果类型错误编译器会报错

List<String> list = new ArrayList<>();
list.add("abc");
list.add(1);	//报错无法放入整数

    省心:取出的时候自动转为想要的类型

String strGet = list.get(0);	//取出就是String类型
否则需要强制转换,因为list.get(int index)取出的是Object类型
List list = new ArrayList();
list.add("abc");
Object objGet = list.get(0);
if(objGet instanceof String)
{
	String strGet = (String)objGet;	//取出就是String类型
}

2.自定义泛型类,例如在自定义个一个栈,因为栈里面放入的数据类型不确定的,所以这边可以使用泛型,方法:类定义时,类名<字母>。

示例:

class myStack<Item>		//栈中的元素类型未知,使用自定义泛型类
{
	private Item[] a;	//声明一个泛型数组
	private int N;
	public myStack(int cap)
	{
		a = (Item[])new Object[cap];
	}
	public boolean isEmpty()
	{
		return N==0;
	}
	public void push(Item item)
	{
		a[N++] = item;
	}
	public Item pop()
	{
		return a[--N];
	}
}
class Test
{
	public static void main(String[] args)
	{
		myStack<String> stack = new myStack<>(4);//这边栈对象只能添加String类型的数据
	}
}

注意:创建泛型数组是不允许的,即无法使用Item[] a = new Item[cap]的方式,要使用类型转换,Item[] a = (Item[])new Object[cap]

3.泛型接口

public interface Comparator<T>
{
	int MAX_VALUE = 1024;
	void compare(T t);
}

说明:T只能用在抽象方法上,不能用在修饰MAX_VALUE,例如T MAX_VALUE就会报错。

4.非泛型类中定义泛型方法

方法:在返回类型前面<字母>

示例:

public class Method
{
	public static void main(String[] args)
	{
		test("HelloWorld");
	}
	public static <T> void test(T t)//泛型方法的使用
	{
		System.out.println(t);
	}
}

使用泛型方法的好处:test方法中,可以传入任意类型的数据,并将其打印出来,上面例子中,传入后"HelloWorld"就将T变成了字符串类型。

将这个方法局限在某些类型下:public static <T extends List>void test(T b),T类型只能是List类型或者List类型的子类型。

class Method
{
	public static void main(String[] args)
	{
		//test("HelloWorld");	// 报错
		List list = new ArrayList();
		list.add("abc");
		test(list);	//对象list是List的子类
	}
	public static <T extends List> void test(T b)//这时T只能是List的子类
	{
		System.out.println(b);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值