该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

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

.....

}

java 反射创建属性_使用Java反射机制确定基本数据类型属性相关推荐

  1. java自动创建月份_使用Java根据月份动态绘制BarGraph

    您需要通过每次更改来更新数据集.我添加了一个updateDataset()方法,并在几个关键位置调用了它. private void updateDataset() { dataset.clear() ...

  2. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  3. java反射的优化_请问Java反射的性能为什么比直接调用慢一个数量级左右?

    Method.invoke()本身要用数组包装参数:而且每次调用都必须检查方法的可见性(在Method.invoke()里),也必须检查每个实际参数与形式参数的类型匹配性(在NativeMethodA ...

  4. java反射invoke空指针_【Java】Java 反射 object is not an instance of declaring cla

    [Java]Java 反射 object is not an instance of declaring cla [Java]Java 反射 object is not an instance of ...

  5. java 对象拷贝属性_使用Java对两个对象的属性进行拷贝

    最近和Java的反射打交道比较多一点,可能是因为自己以后的方向是架构师的缘故吧,他们主要搞业务.我能也就搞架构,整天画一些流程图. 虽然对于只有一年实习经验的我,不知道这样是否好,但是我还是那句话,不 ...

  6. java 应用分模块_在Java 11中创建一个简单的模块化应用教程

    模块化编程使人们能够将代码组织成独立的,有凝聚力的模块,这些模块可以组合在一起以实现所需的功能. 本文摘自Nick Samoylov和Mohamed Sanaulla撰写的一本名为Java 11 Co ...

  7. java创建榨汁机_苏州大学Java程序设计课程试卷含答案(B)

    苏州大学Java程序设计课程试卷含答案(B) 文章<苏州大学Java程序设计课程试卷含答案(B)>是由[作文仓库]的会员[上山豹,下山虎i]为大家整理并分享的,仅供大家参考,欢迎阅读! 苏 ...

  8. java 用流创建流_成为Java流大师–第1部分:创建流

    java 用流创建流 在许多情况下,声明性代码(例如,具有Streams的功能组合)提供了出色的代码指标. 通过该动手实验文章系列进行编码,并成为Java Streams的主教练,从而成为一名更好的J ...

  9. java创建临时文件_用Java创建一个临时文件

    java创建临时文件 The task is to create a temporary file in Java. 任务是用Java创建一个临时文件. Creating a temporary fi ...

最新文章

  1. Java Review - 并发编程_ 信号量Semaphore原理源码剖析
  2. 表的连接方式:NESTED LOOP、HASH JOIN、SORT MERGE JOIN
  3. 用WPF山寨折线图,抄?是狠狠的抄
  4. 霍金这次想帮AI说点好话,后来没忍住……
  5. 经典排序算法(二)--桶排序Bucket Sort
  6. 数据分析--优化模型
  7. 联想 yoga213笔记本,无线网卡无法打开-“硬件无线网络关闭无法打开 ‘问题解决方法。Intel 7260AC NGW NGFF接口网卡,蓝牙WIFI模块...
  8. Rayson API 框架分析系列之5: NIO实现原理
  9. 上传漏洞靶场:upload-labs 8-13关
  10. OPenCV4-颜色识别(二)三原色识别
  11. 福建省漳州市谷歌卫星地图下载
  12. 005--Keil使用--出现integer conversion resulted in truncation
  13. linux网络命令--ping
  14. 【VB界面】子类化重绘仿QQ2009渐变按钮(模块)
  15. CSS的Flex布局的学习
  16. 解密|FBI不光有特工,还有智能存储系统!
  17. 一起来挖“中本聪”的矿--寻找中本聪留下的宝贵财富
  18. 15个最好用的JavaScript代码压缩工具
  19. 【记录】U盘安装Ubuntu20.04系统
  20. P5727 【深基5.例3】冰雹猜想

热门文章

  1. 「晓松奇谈」——矮大紧语录
  2. Beta-Binomial 共轭
  3. 向量与向量空间(vector space)
  4. sklearn 细节 —— SGDClassifier、Perceptron(分类模型)
  5. 5岁自学python编程-哈尔滨python少儿编程
  6. python人门指南小说-Python入门深度学习完整指南
  7. python和java的区别-一张图秒懂Java和Python的区别,你知道吗?
  8. 免费python课程排行榜-Python培训机构排行榜哪家更好?老男孩Python全栈开发
  9. python工资一般多少p-Python P值
  10. python基础30个常用代码-即学即用的 30 段 Python 实用代码