loading黑马程序员之高级编程:泛型(4-3)
2014-01-10 11:43
375 查看
-------android培训 、java培训、期待与您交流!
----------
Java泛型(generics)是JDK
5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)
-------android培训 、java培训、期待与您交流!
----------
----------
Java泛型(generics)是JDK
5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)
package com.heima.generic; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * * */ public class Demo2 { public static void main(String[] args) { Person p1 = new Person("yang",22); Person p2 = new Person("wang",21); Map<String, Person> map = new HashMap<String, Person>(); map.put("001", p1); map.put("002", p2); System.out.println("-----通过键集遍历map-----"); Set<String> keySet = map.keySet(); for (Iterator<String> iterator = keySet.iterator(); iterator.hasNext();) { String string = (String) iterator.next(); System.out.println(string+">"+map.get(string)); } System.out.println("-----通过Map.Entry实例对象遍历-----"); Set<Map.Entry<String, Person>> entrySet = map.entrySet(); for (Map.Entry<String, Person> entry : entrySet) { System.out.println(entry.getKey()+">"+entry.getValue()); } } } class Person{ private String name; private int age; public Person(){ } public Person(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toString() { return name+":"+age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package com.heima.generic; import java.util.Collection; import java.util.Iterator; public class Demo3 { public static void main(String[] args) { Object obj = "利用泛型进行类型转换"; System.out.println(convertObj(obj)); Integer[] arr = new Integer[3]; String a ="b"; int b =3; fillArray(arr, a); System.out.println(arr); } //返回值的前面创建一个泛型T,这个T就是参数的实际类型 public static <T>T convertObj(Object obj){ return (T)obj; } public static <T> void fillArray(T[] t,T obj){ for (int i = 0; i < t.length; i++) { t[i] = obj; } } public static void printCollection(Collection<? extends String> collection){ for (Iterator iterator = collection.iterator(); iterator.hasNext();) { Object object = (Object) iterator.next(); System.out.println(object); } } public static <T> void printCollection(Collection<T> collection,T obj){ //如果用Collection<? extends String> collection这种方法 //因为不知道?是什么类型,所以不能随便添加元素 //但是,Collection<T> collection,T obj可以 collection.add(obj); } }
package com.heima.generic; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.Vector; /** *通过反射获取泛型的实际类型参数 */ public class Demo4 { public static void main(String[] args)throws Exception { //因为编译过后,参数类型就消失了 //Vector<String> vector = new Vector<String>(); //但是方法可以获取自己的参数列表,泛型类型也可以获取到哦 Method method = Demo4.class.getMethod("applyVector", Vector.class); Type[] types = method.getGenericParameterTypes(); ParameterizedType pType = (ParameterizedType) types[0]; System.out.println(pType.getRawType()); System.out.println(pType.getActualTypeArguments()[0]); } public static void applyVector(Vector<String> v){ } }
-------android培训 、java培训、期待与您交流!
----------
相关文章推荐
- loading黑马程序员之高级编程:反射(4-2)
- loading黑马程序员之高级编程:代理(4-4)
- 黑马程序员-- 高级网络编程 什么是泛型?泛型的定义?泛型如何使用?为什么要使用泛型?
- loading黑马程序员之高级编程:枚举(4-1)
- loading黑马程序员之网络编程:文件传输(3-2)
- 【JAVA编程】泛型高级应用之泛型限定
- 黑马程序员_java高级篇网络编程TCP实战Day8(下)
- 黑马程序员---.NET高级之网络套接字(Socket)编程
- 泛型(高级指针)指针编程
- 黑马程序员:泛型的高级介绍及通过反射获取实际类型参数
- 黑马程序员_java高级篇网络编程UDP实战Day7(下)
- 黑马程序员_java高级篇网络编程TCP实战Day8(上)
- 黑马程序员:Java基础总结----泛型(高级)
- C#高级编程三十天----泛型结构,泛型方法,泛型托付
- 1.创建泛型 类-C#高级编程
- 黑马程序员总结2--python高级编程
- 黑马程序员-JAVA 高级技术(泛型)
- C#高级编程笔记 Day 5, 2016年9月 13日 (泛型)
- 黑马程序员---高级网络编程 io 输入,输出流
- 黑马程序员:Java基础总结----泛型(高级)