欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【续】Java变量类型识别的3种方式(补充)

程序员文章站 2022-03-02 08:35:17
...

本文是《Java变量类型识别的3种方式》的一个补充

经过各位大牛和朋友的指点和提示,觉得不足的地方很多,所以专门写了一个补充文章。

本文已经更新到我个人博客(测试版)

 

内容导览

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

测试类:

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.更多的内容请看我的  个人博客(测试版)