JavaSE20_總結之Java變量類型識別的方式



總結之Java變量類型識別的方式


package com.hoonee.javase.summary;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * Java變量類型識別的方式 1.反射方式,成員變量的類型判斷 2.isInstance用法 3.利用泛型識別類型
 * 
 * @author Hoonee
 * @mail [email protected]
 */
public class ObtainVarTypeDemo {
	
	private static int intVar = 0;
	private static Date dateVar = new Date();

	public static void main(String[] args) throws Exception {

		// 使用發射方式獲取變量的類型
		System.out.println(ObtainVarTypeDemo.class.getDeclaredField("intVar").getType());
		System.out.println(ObtainVarTypeDemo.class.getDeclaredField("dateVar").getType());

		// 使用isInstance獲取變量的類型
		System.out.println(Integer.class.isInstance(intVar));
		System.out.println(Date.class.isInstance(dateVar));

		// 泛型方式判斷類型
		System.out.println(ObtainVarTypeDemoByGenerics.getType(intVar));
		System.out.println(ObtainVarTypeDemoByGenerics.getType("test"));
		System.out.println(ObtainVarTypeDemoByGenerics.getType(dateVar));
	}
}
class ObtainVarTypeDemoByGenerics {
	
	private static final Map<String, String> varTypeMap = new HashMap<String, String>();
	
	static {
		varTypeMap.put("java.lang.Byte", "byte");
		varTypeMap.put("java.lang.Short", "short");
		varTypeMap.put("java.lang.Integer", "int");
		varTypeMap.put("java.lang.Long", "long");
		varTypeMap.put("java.lang.Float", "float");
		varTypeMap.put("java.lang.Double", "double");
		varTypeMap.put("java.lang.Character", "char");
		varTypeMap.put("java.lang.Boolean", "boolean");
	}
	
	public final static <T> String getType(T t) {
		if (t == null) {
			return null;
		}
		String typeInfo = t.getClass().getName();
		return varTypeMap.containsKey(typeInfo) ? varTypeMap.get(typeInfo) : typeInfo;
	}
}



發佈了132 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章