java 反射創建屬性_使用Java反射機制確定基本數據類型屬性

 2023-11-18 阅读 15 评论 0

摘要:該樓層疑似違規已被系統折疊?隱藏此樓查看此樓Java反射機制提供了一種強大的應用程序接口來幫助我們在運行時檢測和執行對象上的操作。該機制允許程序員審視一個未知對象,并且獲得它的屬性,例如對象上的方法,JavaBean的屬性以及繼承關系等。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

.....

}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/178643.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息