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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM