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是用于对象与类的判断