• 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

  • 相关阅读:
    leetcode------Search in Rotated Sorted ArrayII
    leetcode------Search in Rotated Sorted Array
    leetcode------Multiply Strings
    leetcode------Integer to Roman
    IIS7.5 自定义Html/shtml/htm...后缀映射
    [错误]试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
    FolderBrowserDialog 成员
    [转载]DirectoryEntry配置IIS7出现ADSI Error:未知错误(0x80005000)
    C# textbox 滚动条 随文本输入 滚动
    C#文件对话框,一次多选文件设置
  • 原文地址:https://www.cnblogs.com/chancy/p/8514273.html
Copyright © 2020-2023  润新知