泛型

泛型:JDK1.5版本号以后出现新特性。

用于解决安全问题,是一个类型安全机制。


优点:

1.将执行时期出现故障ClassCastException转移到了编译时期,方便程序猿解决这个问题。

让执行时问题降低,安全。


2,避免了强制转换麻烦。

泛型格式:通过<>来定义要操作的引用数据类型。


在使用java提供的对象时,什么时候写泛型呢?
当类中要操作的引用数据类型不确定的时候,早期定义Object来完毕扩展。如今定义泛型来完毕扩展。



通常在集合框架中非经常见,仅仅要见到<>就要定义泛型。事实上<> 就是用来接收类型的。



当使用集合时,将集合中要存储的数据类型作为參数传递到<>中就可以。

比方说:

import java.util.*;
class GenericDemo 
{
	public static void main(String[] args) 
	{

		ArrayList<String> al = new ArrayList<String>();

		al.add("abc01");
		al.add("abc0991");
		al.add("abc014");

		//al.add(4);//al.add(new Integer(4));
		

		Iterator<String> it = al.iterator();
		while(it.hasNext())
		{
			String s = it.next();

			System.out.println(s+":"+s.length());
		}
	}
}

泛型使用:

import java.util.*;
class GenericDemo2 
{
	public static void main(String[] args) 
	{
		TreeSet<String> ts = new TreeSet<String>(new LenComparator());

		ts.add("abcd");
		ts.add("cc");
		ts.add("cba");
		ts.add("aaa");
		ts.add("z");
		ts.add("hahaha");


		Iterator<String> it = ts.iterator();

		while(it.hasNext())
		{
			String s = it.next();
			System.out.println(s);
		}
	}
}


class LenComparator implements Comparator<String>
{
	public int compare(String o1,String o2)
	{
		int num = new Integer(o2.length()).compareTo(new Integer(o1.length()));

		if(num==0)
			return o2.compareTo(o1);
		return num;
	}
}

定义泛型类

class Worker{
}
class Student{
}
//泛型前做法。
class Tool
{
	private Object obj;
	public void setObject(Object obj)
	{
		this.obj = obj;
	}
	public Object getObject()
	{
		return obj;
	}
}

//泛型类。
/*
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,
早期定义Object来完毕扩展。
如今定义泛型来完毕扩展。

*/ class Utils<QQ> { private QQ q; public void setObject(QQ q) { this.q = q; } public QQ getObject() { return q; } } class GenericDemo3 { public static void main(String[] args) { Utils<Worker> u = new Utils<Worker>(); u.setObject(new Worker()); Worker w = u.getObject();; /* Tool t = new Tool(); t.setObject(new Student()); Worker w = (Worker)t.getObject(); */ } }



原文地址:https://www.cnblogs.com/bhlsheji/p/5231213.html