| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
1 泛型(Generic)
1.1 说明
增强了java的类型安全,可以在编译期间对容器内的对象进行类型检查,在运行期不必进行类型的转换。而在j2se5之前必须在运行期动态进行容器内对象的检查及转换 网管网www.bitscn.com
减少含糊的容器,可以定义什么类型的数据放入容器
|
ArrayList<Integer> listOfIntegers; // <TYPE_NAME> is new to the syntax 网管u家u.bitscn@com Integer integerObject; 中国网管联盟bitsCN.com
listOfIntegers = new ArrayList<Integer>(); // <TYPE_NAME> is new to the syntax 网管网www.bitscn.com listOfIntegers.add(new Integer(10)); // 只能是Integer类型 网管u家u.bitsCN.com integerObject = listOfIntegers.get(0); // 取出对象不需要转换 网管联盟bitsCN_com |
网管论坛bbs_bitsCN_com
网管论坛bbs_bitsCN_com
1.2 用法网管论坛bbs_bitsCN_com
声明及实例化泛型类:
HashMap<String,Float> hm = new HashMap<String,Float>(); 网管联盟bitsCN_com //不能使用原始类型 网管下载dl.bitscn.com GenList<int> nList = new GenList<int>(); //编译错误 中国网管联盟bitsCN.com
网管bitscn_com
J2SE 5.0目前不支持原始类型作为类型参数(type parameter)网管网www_bitscn_com
定义泛型接口:
网管论坛bbs_bitsCN_com
public interface GenInterface<T> { 网管网www.bitscn.com void func(T t); } 网管论坛bbs_bitsCN_com
网管u家u.bitsCN.com
定义泛型类:
网管联盟bitsCN@com
public class ArrayList<ItemType> { ... } 网管网www.bitscn.com public class GenMap<T, V> { ... } 网管网www.bitscn.com 例1: 网管u家u.bitscn@com public class MyList<Element> extends LinkedList<Element> 网管网www_bitscn_com { 网管bitscn_com public void swap(int i, int j) { 网管bitscn_com Element temp = this.get(i); 网管u家u.bitscn@com this.set(i, this.get(j)); this.set(j, temp); 网管u家u.bitsCN.com } 网管网www.bitscn.com public static void main(String[] args) 网管网www.bitscn.com { MyList<String> list = new MyList<String>(); 网管u家u.bitsCN.com list.add("hi"); 中国网管论坛bbs.bitsCN.com list.add("andy"); System.out.println(list.get(0) + " " + list.get(1)); 网管bitscn_com list.swap(0,1); 网管u家u.bitsCN.com System.out.println(list.get(0) + " " + list.get(1)); 网管u家u.bitscn@com } 中国网管论坛bbs.bitsCN.com } 网管u家u.bitscn@com
网管网www.bitscn.com
例2: 中国网管联盟bitsCN.com
|
public class GenList <T>{ 网管u家u.bitscn@com private T[] elements; 网管网www.bitscn.com private int size = 0; 网管网www.bitscn.com private int length = 0; 网管联盟bitsCN@com public GenList(int size) { 网管联盟bitsCN@com elements = (T[])new Object[size]; 网管网www.bitscn.com this.size = size; 网管联盟bitsCN_com
} 网管下载dl.bitscn.com 网管联盟bitsCN_com public T get(int i) { 中国网管联盟bitsCN.com
if (i < length) { 网管论坛bbs_bitsCN_com return elements[i]; 网管下载dl.bitscn.com } 网管u家u.bitscn@com return null; 网管u家u.bitsCN.com } 网管bitscn_com
网管bitscn_com public void add(T e) { 网管网www.bitscn.com if (length < size - 1) 网管下载dl.bitscn.com
elements[length++] = e; 中国网管联盟bitsCN.com } 网管联盟bitsCN_com } 中国网管论坛bbs.bitsCN.com |
网管u家u.bitsCN.com
网管下载dl.bitscn.com
泛型方法:
网管下载dl.bitscn.com
public class TestGenerics{ public <T> String getString(T obj) { //实现了一个泛型方法 中国网管论坛bbs.bitsCN.com return obj.toString(); 中国网管论坛bbs.bitsCN.com } 网管网www.bitscn.com 网管联盟bitsCN_com public static void main(String [] args){ 网管u家u.bitscn@com TestGenerics t = new TestGenerics(); 中国网管联盟bitsCN.com String s = "Hello"; 网管联盟bitsCN_com Integer i = 100; System.out.println(t.getString(s)); 网管bitscn_com System.out.println(t.getString(i)); } 中国网管联盟bitsCN.com }
中国网管联盟bitsCN.com
网管网www.bitscn.com
网管bitscn_com
|
0
|
评论加载中…