您的位置:首页 > 编程语言 > Java开发

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);//启用访问控制权限,掉私有属性之前必须设置



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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: