【续】Java变量类型识别的3种方式(补充)
程序员文章站
2022-04-04 21:58:32
...
本文是《Java变量类型识别的3种方式》的一个补充
经过各位大牛和朋友的指点和提示,觉得不足的地方很多,所以专门写了一个补充文章。
本文已经更新到我的个人博客(测试版)中
内容导览
- 反射方式,成员变量的类型判断
- isInstance用法
- 利用泛型识别类型
测试类:
package com.cxyapi.oo; import java.util.Date; import com.cxyapi.generics.TypeToolsGenerics; /** 类型识别工具测试类 * @author cxy @ www.cxyapi.com */ 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)); } }
泛型方式类型识别工具:
package com.cxyapi.generics; import java.util.HashMap; import java.util.Map; /** 类型识别工具 泛型 * @author cxy @ www.cxyapi.com */ 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; } }
声明:
1.原创文章,转载请标明并加本文连接。
2.文章反映个人愚见,如有异议欢迎讨论指正
3.更多的内容请看我的 个人博客(测试版)
上一篇: Java基础 之 final