Java变量类型识别

方法:

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

一、新建测试类
import java.util.Date;

import com.cxyapi.generics.TypeToolsGenerics;

/** 类型识别工具测试类 
 * */
public class TypeToolsTest2
{
    private static int ii=0;
    private static Date d=new Date();

    public static void main(String[] args) throws Exception
    {
        //补充一:获得成员变量的类型  
        System.out.println(TypeToolsTest2.class.getDeclaredField("ii").getType());
        System.out.println(TypeToolsTest2.class.getDeclaredField("d").getType());
        System.out.println("----------------------");

        //补充二:isInstance可判断出包装类型,从而得知基本类型  
        System.out.println(Integer.class.isInstance(ii));
        System.out.println(Date.class.isInstance(d));
        System.out.println("----------------------");

        //补充三:泛型方式判断类型  
        System.out.println(TypeToolsGenerics.getType(ii));
        System.out.println(TypeToolsGenerics.getType(2.2));
        System.out.println(TypeToolsGenerics.getType(true));
        System.out.println(TypeToolsGenerics.getType('a'));
        System.out.println(TypeToolsGenerics.getType(d));
    }
}

二、泛型方式类型识别工具

import java.util.HashMap;  
import java.util.Map;  
  
  
/** 类型识别工具 泛型 
 * 
 */  
public class TypeToolsGenerics  
{  
    private static final Map<String,String> typeMap=new HashMap<String,String>();  
    static  
    {  
        typeMap.put("java.lang.Byte", "byte");  
        typeMap.put("java.lang.Short", "short");  
        typeMap.put("java.lang.Integer", "int");  
        typeMap.put("java.lang.Long", "long");  
        typeMap.put("java.lang.Double", "double");  
        typeMap.put("java.lang.Float", "float");  
        typeMap.put("java.lang.Character", "char");  
        typeMap.put("java.lang.Boolean", "boolean");  
    }  
    public final static <T> String getType(T t)  
    {  
        if(t==null){return null;}  
        String typeInfo=t.getClass().getName();  
        return typeMap.containsKey(typeInfo)?typeMap.get(typeInfo):typeInfo;   
    }  
}

注意:instanceof是用于对象与类的判断

 

posted @ 2021-11-01 15:48  名曰大神  阅读(286)  评论(0编辑  收藏  举报