loading黑马程序员之高级编程:泛型(4-3)
来源:互联网 发布:关闭iis 80端口 编辑:程序博客网 时间:2024/05/21 22:44
-------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;}@Overridepublic 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培训、期待与您交流! ----------
0 0
- loading黑马程序员之高级编程:泛型(4-3)
- loading黑马程序员之高级编程:代理(4-4)
- loading黑马程序员之高级编程:枚举(4-1)
- loading黑马程序员之高级编程:反射(4-2)
- loading黑马程序员之网络编程:聊天(3-1)
- loading黑马程序员之网络编程:文件传输(3-2)
- loading黑马程序员之IO键盘输入(2-3)
- loading黑马程序员之IOFile(2-4)
- loading黑马程序员之IO字符流(2-1)
- loading黑马程序员之IO字节流(2-2)
- loading黑马程序员之交通灯管理系统(5-1)
- loading黑马程序员之银行业务调度系统(5-2)
- 黑马程序员-JAVA高级(网络编程)PART1
- 黑马程序员-JAVA高级(网络编程)PART2
- 黑马程序员-JAVA 高级技术(泛型)
- 黑马程序员--高级网络编程 枚举
- 黑马程序员《.NET DOM高级编程》
- 黑马程序员总结2--python高级编程
- 多线程出现卖相同票号码和负数票分析
- 修改了主机名 veeam backup service 服务启动不了 解决!
- java内部类分析
- 流程图控件FlowChart.NET使用教程:复合命令
- grep 字符串高亮显示
- loading黑马程序员之高级编程:泛型(4-3)
- datetime计算日期差值
- 弹出窗口组件
- 在delphi中Char,PChar,PByte,Byte,String的相互转换示例
- u-boot.lds文件详解
- PhoneGap 03 平台支持
- C++平台对指针的处理
- gap and gatt
- 网众远程修改ip、dns