java反射变量类型判断_使⽤Java反射机制确定基本数据类型
属性
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Java反射机制提供了⼀种强⼤的应⽤程序接⼝来帮助我们在运⾏时检测和执⾏对象上的操作。该机制允许程序员审视⼀个未知对象,并且获得它的属性,例如对象上的⽅法,JavaBean的属性以及继承关系等。
Java中有两种类型的值,⼀种是类类型,它把对象的属性定义在⼀个类中。类类型是⾯向对象结构的基本组成部分。第⼆种类型的值是基本数据类型。反射类型通常⽤于类类型,但是,其实它也可以很⽅便应⽤到Java的基本类型上。
Java中的基本类型继承⾃基于C的语法,其中包括boolean、byte、short、int、long、float、double、char等类型。
每⼀个基本类型都与⼀个java类相关联。这些类封装在java.lang.package中,这个package默认导⼊所有的java源代码⽂件。
在java.lang包的基本数据类型包装类中,不是像定义对象那样⽤类(class)⽽是⽤⼀些特殊的常量来表⽰基
本数据的类型(type).例如,是常量Interger.TYPE⽽不是类Integer表⽰int类型,是Byte.TYPE常量表⽰了byte类型.这种⽅式使得为⼀个未知的JavaBean创建通⽤的组件成为可能.
下⾯是⼀个例⼦⽚断,其作⽤是根据⼀个传来的HttpServletRequest中设置JavaBean中的值。
// thrown
Exceptions are left out for ease
Object bean = ....
BeanInfo bi = Class( ));
PropertyDescriptor[ ] pds = bi.getPropertyDescriptors( );
for(int i=0; i String name = pds[i].getName( );
String value = Parameter(name);
if(value != null) {
Method method = pds[i].getWriteMethod(
);
value = convert(value,
method.invoke(bean, new Object[
] { value } );
}
}
Convert⽅法中缺少的代码定义如下:
public Object
convert(Object value, Class type) {
String name = Name( );
if( "java.lang.String.equals(name) ) {
String();
} else
if( "java.lang.Long".equals(name) || (type == Long.TYPE) ) {
return convertToLong(value);
} else
if( "java.lang.Integer".equals(name) || (type == Integer.TYPE) ) {
return convertToInteger(value);
} else
java变量的数据类型分为两种
.....
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。