Java变量类型识别的3种方式

内容导览

  1. 反射方式,成员变量的类型判断
  2. isInstance用法
  3. 利用泛型识别类型

测试类:

Java代码  
 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

原文地址:https://www.cnblogs.com/chancy/p/8514273.html