服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 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 of reading...
object bean = ....
beaninfo bi = introspector.getbeaninfo(bean.getclass( ));
propertydescriptor[ ] pds = bi.getpropertydescriptors( );
for(int i=0; i string name = pds[i].getname( );
string value = request.getparameter(name);
if(value != null) {
method method = pds[i].getwritemethod(
);
value = convert(value,
method.getparametertype( )[0]);
method.invoke(bean, new object[
] { value } );
}
} 
convert方法中缺少的代码定义如下:
public object
convert(object value, class type) {
string name = type.getname( );
if( "java.lang.string.equals(name) ) {
return value.tostring();
} 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
.....
}

扫描关注微信公众号