泛型

it2025-06-12  35

泛型: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

最新回复(0)