前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java反射机制入门02

java反射机制入门02

作者头像
用户1737026
发布2018-05-17 17:28:31
5270
发布2018-05-17 17:28:31
举报
文章被收录于专栏:五毛程序员五毛程序员

Field对象的机制与实现

1、Field对象概述

  1)Java.lang.reflect.Field类,是用于表示类中、接口中属性对象的类。

  2)可以操作类中私有,以及公有等全部属性和属性的信息。 

2、Field对象的常用方法介绍

方法名

释义

getName()

获取属性名称

getType()

获取属性类型

get(Object obj)

取得obj对象中这个属性的值

set(Object obj,Object value)

向boj这个属性赋值value

setAccessible(boolean)

启用/禁用访问控制权限

代码语言:javascript
复制
package com.rainmer.main;

import java.lang.reflect.Field;

import com.rainmer.bean.Book;

public class FieldTest {
    //改方法用于使用传递过来的Class对象获取类中的属性
    public void show(Class c1){
        Field[] fi = c1.getDeclaredFields();//可以获取所有属性,无论公有还是私有
        System.out.println("~~~~~~~~~~~~获取所有有属性(包括私有)~~~~~~~~~~~~~~");
        for(Field ff : fi){
            System.out.println(ff.getName());
            System.out.println(ff.getType());
        }
        System.out.println("~~~~~~~~~~~~只能获取共有属性~~~~~~~~~~~~~~");
        Field[] fi1 = c1.getFields();//只能获取共有属性
        for (Field ff : fi1) {
            System.out.println(ff.getName());//属性名称
            System.out.println(ff.getType());//属性类型
        }
    }
    
    //该方法用于使用传递过来的实体类对象获取属性以及属性的值
    public void show(Object ob){
        System.out.println("~~~~~~~~~~~~~~~通过实体类对象获取属性以及属性的值~~~~~~~~~~~~~~~~~~~");
        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();
        }
    }
    
    public static void main(String[] args) {
        Book bo = new Book();
        bo.setId(1);
        bo.setName("斗破苍穹");
        bo.setType("玄幻");
        
        FieldTest ft = new FieldTest();
        ft.show(Book.class);
        ft.show(bo);
        
    }
}

运行结果:

调用了setName方法 ~~~~~~~~~~~~获取所有有属性(包括私有)~~~~~~~~~~~~~~ id int name class java.lang.String type class java.lang.String ~~~~~~~~~~~~只能获取共有属性~~~~~~~~~~~~~~ type class java.lang.String ~~~~~~~~~~~~~~~通过实体类对象获取属性以及属性的值~~~~~~~~~~~~~~~~~~~ id值1 name值斗破苍穹 type值玄幻

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-07-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档