總結之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;
}
}