Java变量类型识别的3种方式
内容导览
- 反射方式,成员变量的类型判断
- isInstance用法
- 利用泛型识别类型
测试类:
1 package com.cxyapi.oo; 2 3 import java.util.Date; 4 5 import com.cxyapi.generics.TypeToolsGenerics; 6 7 /** 类型识别工具测试类 8 * @author cxy @ www.cxyapi.com 9 */ 10 public class TypeToolsTest2 11 { 12 private static int ii=0; 13 private static Date d=new Date(); 14 15 public static void main(String[] args) throws Exception 16 { 17 //补充一:获得成员变量的类型 18 System.out.println(TypeToolsTest2.class.getDeclaredField("ii").getType()); 19 System.out.println(TypeToolsTest2.class.getDeclaredField("d").getType()); 20 System.out.println("----------------------"); 21 22 //补充二:isInstance可判断出包装类型,从而得知基本类型 23 System.out.println(Integer.class.isInstance(ii)); 24 System.out.println(Date.class.isInstance(d)); 25 System.out.println("----------------------"); 26 27 //补充三:泛型方式判断类型 28 System.out.println(TypeToolsGenerics.getType(ii)); 29 System.out.println(TypeToolsGenerics.getType(2.2)); 30 System.out.println(TypeToolsGenerics.getType(true)); 31 System.out.println(TypeToolsGenerics.getType('a')); 32 System.out.println(TypeToolsGenerics.getType(d)); 33 } 34 }
泛型方式类型识别工具:
1 package com.cxyapi.generics; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 7 /** 类型识别工具 泛型 8 * @author cxy @ www.cxyapi.com 9 */ 10 public class TypeToolsGenerics 11 { 12 private static final Map<String,String> typeMap=new HashMap<String,String>(); 13 static 14 { 15 typeMap.put("java.lang.Byte", "byte"); 16 typeMap.put("java.lang.Short", "short"); 17 typeMap.put("java.lang.Integer", "int"); 18 typeMap.put("java.lang.Long", "long"); 19 typeMap.put("java.lang.Double", "double"); 20 typeMap.put("java.lang.Float", "float"); 21 typeMap.put("java.lang.Character", "char"); 22 typeMap.put("java.lang.Boolean", "boolean"); 23 } 24 public final static <T> String getType(T t) 25 { 26 if(t==null){return null;} 27 String typeInfo=t.getClass().getName(); 28 return typeMap.containsKey(typeInfo)?typeMap.get(typeInfo):typeInfo; 29 } 30 }
转载自:http://blog.csdn.net/liweishi123/article/details/52880542
(转载请注明花儿为何那样红博客)