Java进阶(极客)——反射机制(二)Field 对象的机制与实现
2015-06-30 09:58
966 查看
1、Field对象概述:
1.1java.lang.reflect.Field,是用于表示类中,接口中属性对象的类
1.2可以操作类中私有以及共有等全部属性和属性信息
2、Field对象的常用方法
getName();//获得属性名称
getType();//获得属性类型
get(Object obj);//获取obj对象中这个的属性值
set(Object obj, Object value);//像obj对象中这个属性赋值为value
setAccessible(true);//启用访问控制权限,掉私有属性之前必须设置
![](http://img.blog.csdn.net/20150630100452357?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhaWhhb2hhbzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
FieldTest:
Book:
源码下载:
http://download.csdn.net/detail/zhaihaohao1/8852965
参考视频:
http://www.jikexueyuan.com/course/530.html
1.1java.lang.reflect.Field,是用于表示类中,接口中属性对象的类
1.2可以操作类中私有以及共有等全部属性和属性信息
2、Field对象的常用方法
getName();//获得属性名称
getType();//获得属性类型
get(Object obj);//获取obj对象中这个的属性值
set(Object obj, Object value);//像obj对象中这个属性赋值为value
setAccessible(true);//启用访问控制权限,掉私有属性之前必须设置
FieldTest:
package com.zhh.fanshe.main; import java.lang.reflect.Field; import com.zhh.fanshe.domain.Book; /** * Field 对象的机制与实现 */ public class FieldTest { public static void main(String[] args) { Book book = new Book(); book.setId(1); book.setName("三国演义"); book.setType("小说"); //show1_1(Book.class); show2(book); } /** * 方式1 * 该方法用于使用传递过来的Class对象获取类中的属性值 */ public static void show1(Class cl) { Field[] field=cl.getDeclaredFields();//可以获取到私有属性 for (Field f:field) { System.out.println(f.getName()); System.out.println(f.getType()); /* 属性: * id int name 属性类型 class java.lang.String type class java.lang.String * */ } } /** * 方式2 *该方法用于使用传递过来的Class对象获取类中的属性值 */ public static void show1_1(Class cl) { Field[] field=cl.getFields();//不能获取私有属性 for (Field f:field) { System.out.println(f.getName()); System.out.println(f.getType()); /* 打印出来的日志: * id 属性名 int 属性类型 name class java.lang.String type class java.lang.String * */ } } /**该方法用于使用传递过来的实体类对象 获取属性 以及属性的值 * * @param ob */ public static void show2(Object ob){ Class cl = ob.getClass(); Field[] fi = cl.getDeclaredFields(); try { for(Field ff : fi){ ff.setAccessible(true);//设置启用,启动访问权限,才能调用私有属性 System.out.println(ff.getName()+"值"+ff.get(ob)); } } catch (Exception e) { e.printStackTrace(); } } }//class
Book:
package com.zhh.fanshe.domain; public class Book { public int id; private String name; private String type; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { System.out.println("getName方法被调用了"); return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } public void test(String name, int i) { System.out.println(name); System.out.println(i); } }
源码下载:
http://download.csdn.net/detail/zhaihaohao1/8852965
参考视频:
http://www.jikexueyuan.com/course/530.html
相关文章推荐
- Spring+ibatis出现ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
- Java进阶(极客)——反射机制(一)概述及Class 对象的机制与实现
- 单例模式
- eclipse不自动弹出提示
- Java基础:String类型下的方法
- Java按值传递、按引用传递
- 开源中国GIT中Java分类下TOP10项目的活动情况分析
- Eclipse设置相同变量背景色高亮显示
- 驰骋工作流推出JAVA版本--JFlow
- MyBatis+Spring 事务管理
- Java 连接Access数据库的两种方式
- Java构造函数的相互调用
- Web应用与Spring MVC锁session
- Java中使用JDBC操作数据库简单实例
- 【JAVA】LinkedList使用详解
- java编写的计算器
- struts2 中 Actionsupport 的作用
- Java实验第一天
- java实现公历转农历代码
- Java中的Enum的使用与分析