java 反射机制 field,Java进阶(极客)——反射机制(二)Field 对象的机制与实现

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

0818b9ca8b590ca3270a3433284dd417.png

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);

}

}

源码下载:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值