Java 反射机制[Field反射]

1.  反射概念及功能

反射就是把Java类中的各种成分映射成对应的Java类。比如一个Java类中用一个Class类的对象来表示。

一个类中的组成部分分为成员变量,方法,构造方法,包等等。

Java反射机制主要提供了下面功能: 推断在执行时随意一个对象所属的类;在执行时构造随意一个类的对象;推断在执行时随意一个类所具有的成员变量和方法;在执行时调用随意一个对象的方法。生成动态代理。

2.  Field反射

下面代码将obj对象中的String类型的字段相应的Value中含有i的字符替换为abc。通过这个简单的案例进行初步分析Java的反射机制。

Java Code

/*

* System Abbrev :

* system Name  :

* Component No  :

* Component Name:

* File name     :ReflectTestMain.java

* Author        :Qiuzhenping

* Date          :2014-10-25

* Description   :  <description>

*/

/* Updation record 1:

* Updation date        :  2014-10-25

* Updator          :  Qiuzhenping

* Trace No:  <Trace No>

* Updation No:  <Updation No>

* Updation Content:  <List all contents of updation and all methods updated.>

*/

package com.qiuzhping.reflect.main;

import java.lang.reflect.Constructor;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

/**

* <Description functions in a word>

* 反射就是把Java类中的各种成分映射成对应的Java类。

* <Detail description>

*

* @author  Qiuzhenping

* @version  [Version NO, 2014-10-25]

* @see  [Related classes/methods]

* @since  [product/module version]

*/

public class ReflectTestMain {

/** <default constructor>

*/

public ReflectTestMain() {

// TODO Auto-generated constructor stub

}

/** <Description functions in a word>

* 2014-10-25

* <Detail description>

* @author  Qiuzhenping

* @param args [Parameters description]

* @return void [Return type description]

* @exception throws [Exception] [Exception description]

* @see [Related classes#Related methods#Related properties]

*/

public static void main(String[] args) throws Exception{

// TODO Auto-generated method stub

//Constructor[] contructor = Person.class.getConstructors();

//Method[] method = Person.class.getMethods();

Person p = new Person(24, "Qiuzhping", "100001", "Qiuzhping");

//               Field [] field = p.getClass().getDeclaredFields();

//               for(Field f:field){

//                         f.setAccessible(true);

//                         System.out.println(f.getName());

//                         Object obj = f.get(p);

//                         System.out.println(obj);

//               }

changeStringValue(p);

System.out.println(p.toString());

}

/** <Description functions in a word>

*  将obj对象中的String类型的字段相应的Value中含有i的字符替换为abc<BR>

*  2014-10-26

* <Detail description>

* @author  Qiuzhenping

* @param obj [Parameters description]

* @return void [Return type description]

* @exception throws [Exception] [Exception description]

* @see [Related classes#Related methods#Related properties]

*/

private static void changeStringValue(Object obj) throws Exception {

Field[] fields = obj.getClass().getDeclaredFields();

for(Field f : fields){

f.setAccessible(true);//暴力反射

if(f.getType() == String.class){//字节码比較是用 ==

String oldValue = (String) f.get(obj);

String newValue = oldValue.replaceAll("i", "abc");//将全部的i替换为abc

f.set(obj, newValue);

}

}

}

static class Person {

public Person(int age, String name, String id, String pwd) {

super();

this.age = age;

this.name = name;

this.id = id;

this.pwd = pwd;

}

@Override

public String toString() {

return "age = "+age +"\tname = "+name+"\tid = "+id+"\tpwd = "+pwd;

}

private int age;

private String name;

private String id;

private String pwd;

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

/** <default constructor>

*/

public Person() {

// TODO Auto-generated constructor stub

}

}

}

Java 反射机制[Method反射]

Java 反射机制[Field反射]相关推荐

  1. java反射取实体字符串_JAVA反射机制 通过反射 Field类获取和修改对象类的字符串值...

    实际编程中如果我们要使用系统中未暴露的方法,我们可以通过反射来使用这些方法,但在使用过程中我们很难确定方法对用的参数类型,以下的代码可以帮你得到这些信息: package cn.sunzn.refle ...

  2. java 反射机制_Java反射机制原理探究

    反射是Java中的一个重要的特性,使用反射可以在运行时动态生成对象.获取对象属性以及调用对象方法.与编译期的静态行为相对,所有的静态型操作都在编译期完成,而反射的所有行为基本都是在运行时进行的,这是一 ...

  3. java反射机制_java反射机制的讲解

    一 , 什么是java反射机制? JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象 ...

  4. 哪些类用来实现java反射机制_JAVA反射机制

    运行时类型识别(Run-time Type Identification, RTTI)主要有两种方式,一种是我们在编译时和运行时已经知道了所有的类型,另外一种是功能强大的"反射"机 ...

  5. JAVA的反射机制==用反射分析类的实现

    反射的概念:能够分析具体类的能力的程序称为反射 (JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及 ...

  6. java类加载机制、反射、动态代理详解

    类的加载.连接和初始化(系统可能在第一次使用某个类时加载该类, 也可能采用预加载机制来加载某个类)动态代理实现 1.JVM和类 当调用 java 命令运行某个 Java 程序时, 该命令将会启动一个 ...

  7. java 内省机制_Java反射及 IoC原理、内省机制

    JAVA反射及IoC原理.JAVA内省 1. 反射反射是框架设计的灵魂,使用前提:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码文件). 1.1 反射概述主要指程序可 ...

  8. Java反射机制01_反射的概念以及获取字节码信息 的四种方式

    Java反射机制01-反射的概念以及获取字节码信息 的四种方式 一.反射的概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象, 都能够调用它的任意 ...

  9. 什么是反射机制?反射机制有什么作用?

    定义 反射机制是Java语言中一个非常重要的特性,它允许程序在运行时进行自我检查,同时也允许其对内部成员进行操作.由于反射机制能够实现在运行时对类进行装载,因此能够增加程序的灵活性,但是不恰当地使用反 ...

最新文章

  1. ntp时间服务器配置
  2. UDP socket programming in php
  3. QML基础类型之int
  4. Python3学习笔记(一)简介 、 安装 、 解释器
  5. window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
  6. 软件工程---1.概述
  7. 显示器驱动有什么用_科普一下:电脑显示器用什么接口好,主流接口有哪些?...
  8. 江浙沪地区计算机考研高效排名,京津冀,江浙沪地区院校盘点!
  9. 1045. Favorite Color Stripe (30)
  10. selenium+python设置爬虫代理IP的方法
  11. 博客营销之博客平台的选择和优化
  12. Python文件中,reload(sys)找不到的问题
  13. QQ去除未读状态的动画
  14. Spring Gateway 报错java.lang.IllegalStateException: COMPLETED 解决
  15. DevpTips【powerpoint】发现打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿。
  16. 行为识别阅读笔记(paper + parted code):Beyond Frame-level CNN Saliency-Aware 3-D CNN with LSTM for Video Acti
  17. 【抖音视频剪辑】台词找影片素材,剪视频必备
  18. 3.2 语音和语言处理简史
  19. 2020-11-05T09:00:00+08:00 类型的时间格式化处理(时间转换)
  20. java基础之包_繁星漫天_新浪博客

热门文章

  1. BZOJ 1079: [SCOI2008]着色方案 记忆化搜索
  2. mysql中的order by
  3. 在本地生成ssh-key 免密码远程clone GitLab中的项目到本地
  4. CODEVS——T 1049 棋盘染色
  5. U启动安装原版Win7系统教程
  6. httpclient发起https请求以及获取https返回内容
  7. JS中showModalDialog详细使用
  8. 解析高校网络管理员如何制作网络电视墙
  9. CVE-2015-1635(MS15-034)-HTTP.sys远程代码执行复现
  10. Electric device abnormal detection based on IoT and knowledge graph-学习笔记