分享一下我老师大神的人工智能教程吧。零基础,通俗易懂!风趣幽默!http://www.captainbed.net/
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
获取几种形式泛型的Class类型:
ClassA类:
import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;public class ClassA <T>{ private T obj; public void setObject(T obj) { this.obj = obj; } public T getObject() { return obj; } /** * 获取T的实际类型 */ public void testClassA() throws NoSuchFieldException, SecurityException { System.out.print("getSuperclass:"); System.out.println(this.getClass().getSuperclass().getName()); System.out.print("getGenericSuperclass:"); Type t = this.getClass().getGenericSuperclass(); System.out.println(t); if (ParameterizedType.class.isAssignableFrom(t.getClass())) { System.out.print("getActualTypeArguments:"); for (Type t1 : ((ParameterizedType) t).getActualTypeArguments()) { System.out.print(t1 + ","); } System.out.println(); } }}
Test类:
import java.lang.reflect.Type;import java.util.List;import java.util.Map;import java.lang.reflect.ParameterizedType;public class Test extends ClassA<String> { private List<String> list; private Map<String, Object> map; /*** * 获取List中的泛型 */ public static void testList() throws NoSuchFieldException, SecurityException { Type t = Test.class.getDeclaredField("list").getGenericType(); if (ParameterizedType.class.isAssignableFrom(t.getClass())) { for (Type t1 : ((ParameterizedType) t).getActualTypeArguments()) { System.out.print(t1 + ","); } System.out.println(); } } /*** * 获取Map中的泛型 */ public static void testMap() throws NoSuchFieldException, SecurityException { Type t = Test.class.getDeclaredField("map").getGenericType(); if (ParameterizedType.class.isAssignableFrom(t.getClass())) { for (Type t1 : ((ParameterizedType) t).getActualTypeArguments()) { System.out.print(t1 + ","); } System.out.println(); } } public static void main(String args[]) throws Exception { System.out.println(">>>>>>>>>>>testList>>>>>>>>>>>"); testList(); System.out.println("<<<<<<<<<<<testList<<<<<<<<<<<\n"); System.out.println(">>>>>>>>>>>testMap>>>>>>>>>>>"); testMap(); System.out.println("<<<<<<<<<<<testMap<<<<<<<<<<<\n"); System.out.println(">>>>>>>>>>>testClassA>>>>>>>>>>>"); new Test().testClassA(); System.out.println("<<<<<<<<<<<testClassA<<<<<<<<<<<"); }}
结果:
>>>>>>>>>>>testList>>>>>>>>>>>class java.lang.String,<<<<<<<<<<<testList<<<<<<<<<<<>>>>>>>>>>>testMap>>>>>>>>>>>class java.lang.String,class java.lang.Object,<<<<<<<<<<<testMap<<<<<<<<<<<>>>>>>>>>>>testClassA>>>>>>>>>>>getSuperclass:com.pelin.util.ClassAgetGenericSuperclass:com.pelin.util.ClassA<java.lang.String>getActualTypeArguments:class java.lang.String,<<<<<<<<<<<testClassA<<<<<<<<<<<