- 浏览: 194782 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
官人与夫人:
我的也是,看完特地登陆来,赞一个!
SpringMVC JPA 事务,数据库保存操作没有异常但数据保存不成功 -
悲伤的小脑:
这个少了 种情况吧。就是一个时间段完全包含另外一个时间段,这应 ...
java 判断两个时间段是否有交集 -
nilm61:
vip3652204732 写道为什么会报NULL错误,路径是 ...
java调用ffmpeg获取视频信息函数代码 -
vip3652204732:
为什么会报NULL错误,
路径是对的啊。
68行报NULL错误 ...
java调用ffmpeg获取视频信息函数代码 -
liuxuejin:
好!真需要
java调用ffmpeg获取视频信息函数代码
JavaBean和反射
JavaBean
规范
1.必须包含一个无参数的public构造方法
2.必须包含符合命名规范的get和set方法以便访问JavaBean的属性
3.应该是可以序列化(serializable)的
4.必须支持内省(进行自我检查看是否符合规范比如有正确的get/set方法无参的构造方法等)
5.如果有运行时的外观,就必须扩展java.awt.Component类
JavaBean的类型
1.简单属性的JavaBean Set和Get方法比较简单,只负责设置属性值或者取得属性
2.绑定属性的JavaBean Set和Get除了负责属性值或者取得属性值外,还可以通知其他JavaBean自身改变的信息
3.约束属性的JavaBean 比绑定属性的JavaBean功能更复杂.
反射
获得Class对象
方法1:得到一个类的实例,可以根据该对象的实例来获取模板
TextField t = new TextField();
Class mode1 = t.getClass();//实例.getClass();
方法2:通过类的名称来获取模板
TextField t = new TextField();
Class mode1 = TextField.class;//类的对象名.class
方法3:根据类的名称来获取模板
Class mode1 = Class.forName(""com.test7.Students"");//注意还有包名
通过模板获取属性,构造方法,普通方法
获取属性
Students stu = new Students();
Class mode1 = stu.getClass(); //获取单个属性,并且私有属性无法获取
Field field = mode1.getField("name");
System.out.println(field); //获取单个属性,并且可以获得私有
Field field = mode1.getDeclaredField("age");
// System.out.println(field);
//获取多个属性,并且私有属性无法获取
Field fields[] = mode1.getFields();
for(Field f:fields){
System.out.println(f);
}
//获取多个属性,并且可以获取私有属性
// Field fields[] = mode1.getDeclaredFields();
// for(Field f:fields){
// System.out.println(f);}
获取构造方法
Constructor getConstructor(Class[] params)//通过参数类型来获取公共构造方法
//举例通过参数来获取公共构造方法
Class param[] = new Class[3];
param[0] = String.class;
param[1] = int.class;
param[2] = int.class;
Constructor c = mode1.getConstructor(param);
System.out.println(c);
Constructo[] getConstructors()//获取类中所有的公共构造方法
//举例 获取所有公共的构造方法
Constructor cons[] = mode1.getConstructors();
for(Constructor c:cons){
System.out.println(c);
}
Constructor getDeclaredConstructor(Class[] params)//通过参数类型获取所有类型的构造方法
//举例获取所有类型的构造方法
Class param[] = new Class[3];
param[2] = String.class;
param[0] = int.class;
param[1] = int.class;
Constructor con = mode1.getDeclaredConstructor(param); System.out.println(con);
Constructor[] getDeclaredConstructors()//获得所有类型的构造方法
//举例获取所有类型的构造方法
Constructor cc[] = mode1.getDeclaredConstructors();
for(Constructor sd:cc){
System.out.println(sd);}
获取普通方法
Method getMethod(String name,Class[] params)//使用特定的参数类型,获取命名的公共方法
//举例
Students stu = new Students();
Class mode1 = stu.getClass();
Class param[] = new Class[1];
param[0] = int.class;
Method m = mode1.getMethod("setAge", param);
System.out.println(m);
Method[] getMethods()//获得类的所有公共方法
//举例
Students stu = new Students();
Class mode1 = stu.getClass();
Method m[] = mode1.getMethods();
for(Method df:m){
System.out.println(df);}
Method[] getDeclaredMethods()//获得类声明的所有方法
Method getDeclaredMethod(String name,Class[] params)//使用特定参数类型获取声明的命名的方法
反射的定义: 根据一个类的名称去得到对象里的类,属性,方法的技术
反射的作用:
1.判断某个对象所属的类型
2.取得类型(Class)的属性,方法,构造体和父类的相关信息
3.找出接口中的常量和方法定义
4.为一个执行期才得知名称的类产生对象(即动态创建对象创建好对象在NEW它就是静态创建)
反射的原理:
比如创建Dog类的三个对象
Dog d1 = new Dog();
Dog d2 = new Dog();
Dog d3 = new Dog();
这个过程中JVM在底层的实现过程:
1.JVM利用DogClassLoader先将Dog类加载到内存, 然后马上产生一个Class类型的对象,该对象可以看成一个模板, 以后不管创建几个Dog类的实例都是利用该模板生成的,所以一个 类所对应的Class类型对象只有一个
2.根据这个模型生成Dog类的三个实例d1,d2,d3 反射正是利用Java的这种加载方式主动完成了对象的创建及使用
反射使用步骤 1.获得想操作的类的java.lang.Class对象(获取模板)
2.调用诸如getDeclaredMethods的方法(查看模板中的属性和方法)
3.使用reflection API来操作这些信息(知道模板中的属性和方法后对其调用)
知识点
1.小写的class是个关键字用来定义一个类,而大写的Class是Java lang包下的一个类 2.String 的全称 java.lang.String 而由于编辑器默认加载所以只需要写String
3.基本数据类型是.TYPE来获取对象例如Class mode1 = Integer.TYPE;
4.由于构造方法方法名和类名相同所以只需要由参数加以判断,而普通方法的方法名不确定所以在加参数判定的同时还需要获取方法名
5.获取属性,构造方法,普通方法 都是导入java.lang.reflect.包
www.nijieyan.info
发表评论
-
Liferay中的Portlet事件通信
2013-12-31 09:46 776Liferay中的Portlet事件通信在有的项目开发中是需 ... -
Spring+ quartz 之 多任务动态定时(任务中起任务)
2013-09-12 15:58 2373参见上一篇Spring+ quartz 多任务定时 执 ... -
Spring+ quartz 多任务定时 执行 与cronExpression表达式
2013-09-12 15:04 1096在JavaEE系统中,我们会经常用到定时任务, ... -
linux中更改java版本
2013-09-05 15:43 819一. 解压安装jdk 在shell终端下进入jdk-6u14 ... -
nginx+tomcat文件下载不完整
2013-08-05 18:56 1705直接访问tomcat可以正常下载文件 访问前端 ... -
linux配置java环境变量(详细)
2013-07-01 18:58 684一. 解压安装jdk 在shell ... -
查找Maven 依赖
2013-04-22 12:48 995用了Maven,所需的JAR包就不能再像往常一样, ... -
SpringMVC JPA 事务,数据库保存操作没有异常但数据保存不成功
2013-03-11 19:45 3386SpringMVC JPA 事务,数据库保存操作没有异常 ... -
svn错误 svn:Checksum mismatch while updating
2012-12-10 10:48 1999行svn update出错: svn: Checksum ... -
Liferay 验证码动态刷新
2012-07-23 19:11 13801.使用liferay标签生成 验证码的url < ... -
使用Ant编译大量java文件时出java.lang.OutOfMemoryError
2012-07-13 10:26 961一般的出现java.lang.OutOfMemoryError ... -
liferay6.1 启用logj4j.properties定义日志
2012-07-02 14:57 1326在编译好的环境下 即tomcat/webapp/ROOT/WE ... -
liferay6.1 环境搭建遇到点问题
2012-06-13 18:07 1088执行 ant all 出现问题 The enviro ... -
liferay 未了解的领域
2012-06-07 14:20 05.2中通过SharePoint协议与MS Office整合 ... -
mark liferay 表结构分析
2012-04-26 16:22 1349liferay中每个page(layout)的界面顺序是通过l ... -
几个liferay整合
2012-04-18 09:51 0Liferay integration with LDAP ... -
tomcat启动失败:Failed creating java jvm.dll
2012-03-23 11:59 1724在启动tomcat6时失败,错误信息是: [2011 ... -
Liunx/Solaris/Windows下修改war配置文件
2012-03-03 18:05 11341.将 .war 文件复制到临时目录。 写道 ... -
autoReconnect及查看和连接时间有关的系统变量与通常产生的异常
2012-03-03 11:40 2064MySQL官方不推荐使用autoReconnect=true, ... -
xpath
2012-01-14 16:53 0使用xpath获得父节点,并修改了父节点的属性的值之后,再去查 ...
相关推荐
在Java编程中,根据JavaBean反射来实现数据的导出,如Excel、XML、PDF和CSV格式,是一种常见的数据处理技术。JavaBean是Java中的一种设计模式,它提供了一种标准的方式来封装对象属性,便于数据操作。反射机制则是...
5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 ...
5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 ...
5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 ...
5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 ...
熟练掌握JAVA面向对象编程语言,有良好的编码习惯 熟悉常用的JavaAPI,包括多线程、IO、Socket、JDBC、XML、反射等 熟练使用HTML、CSS、JavaScript、JQuery,并了解Ajax 熟练使用JSP、Servlet、javaBean进行web应用...
5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 ...
5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 ...
5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 ...
5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 ...
5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 ...
5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 ...
5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 ...
项目实战部分,如学校信息管理系统,涉及到面向对象设计、接口和抽象类的使用、反射机制、文件操作以及JDBC的实际应用。JAVA EE基础部分涵盖了网页前台制作(HTML、CSS、JavaScript、DreamWeaver),JSP动态网站程序...
Spring框架有两个非常关键的特性:IoC(控制反转)和AOP(面向切面编程)。 ### IoC(Inverse of Control)控制反转 IoC是Spring框架中最基础且重要的概念之一。通过IoC,对象的创建以及对象之间的依赖关系不再由...
3. **Java技术体系**:涵盖了从基本语法、面向对象特性到高级特性的完整范围,如集合框架、多线程、网络编程、I/O流、反射、注解、泛型等,是Java开发者必备的知识体系。 4. **线程运行架构**:Java支持多线程,...
Java是一种广泛使用的面向对象的编程语言,而JavaBean则是一种特定的Java类,通常用于封装数据和业务逻辑,便于组件化开发。 Java语言以其“一次编写,到处运行”的特性,成为跨平台开发的首选工具。它具有丰富的...
Java反射机制是Java程序设计语言的核心特性之一,它允许程序在运行时动态地获取类的信息并操作类的对象。反射机制使得Java具有高度的灵活性和动态性,可以实现一些在编译时无法实现的功能,如动态加载类、调用私有...
JavaBean的主要用途在于封装数据,提供了一种面向对象的方式处理数据。它们常用于Web应用中,与JSP页面配合使用,也可以作为EJB组件的基础。 综上所述,正确配置Java开发环境和了解JavaBean的基本概念对于使用...