问题
Java是面向对象的语言,一切皆是对象,所以基本数据类型都是有自己的包装类的,对于引用数据类型,我们通过反射技术可以得到一个变量的类名.
变量名称.getClass().getSimpleName()
但是,对于基本数据类型,我们如果想要得到他的类型应该怎么办呢?
我查了下API,好像没有专门的方法可以帮助我们直接获取基本数据类型变量的类型,所以我就自己写成了小工具,可以获得一个变量的基本数据类型。
实现小工具
public static void main(String[] args) {
int i = 3;
System.out.println(myGetType(i)); //int
char a = 'a';
System.out.println(myGetType(a)); //char
}
//判断类型
public static String myGetType(Object o) {
String type = o.getClass().getSimpleName();
if ("Integer".equals(type)) {
return String.valueOf(Integer.TYPE);
} else if ("Long".equals(type)) {
return String.valueOf(Long.TYPE);
} else if ("Float".equals(type)) {
return String.valueOf(Float.TYPE);
} else if ("Double".equals(type)) {
return String.valueOf(Double.TYPE);
} else if ("Short".equals(type)) {
return String.valueOf(Short.TYPE);
} else if ("Byte".equals(type)) {
return String.valueOf(Byte.TYPE);
} else if ("Character".equals(type)) {
return String.valueOf(Character.TYPE);
} else if ("Boolean".equals(type)) {
return String.valueOf(Boolean.TYPE);
}
return "非基本数据类型!";
}
测试结果
时间有限,只是实现了判断基本数据类型,肯定有更好更简洁的写法,欢迎大家和我交流哦~
更新下:
如果在一个类中,想要获得某个成员变量的类型,还是有方法可以得到类型的,可以通过反射获得Field对象,再调用该对象内置API,
getType()
获取基本数据类型,恕我先前未找到方法~
public class TypeDemo {
int age=10;
Class<?> c1 = Class.forName("_02reflect._08ReflectDemo");
Field age1 = c1.getDeclaredField("age");
System.out.println(age1.getType()); //int
}
}