Java 反射机制[Field反射]
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反射]相关推荐
- java反射取实体字符串_JAVA反射机制 通过反射 Field类获取和修改对象类的字符串值...
实际编程中如果我们要使用系统中未暴露的方法,我们可以通过反射来使用这些方法,但在使用过程中我们很难确定方法对用的参数类型,以下的代码可以帮你得到这些信息: package cn.sunzn.refle ...
- java 反射机制_Java反射机制原理探究
反射是Java中的一个重要的特性,使用反射可以在运行时动态生成对象.获取对象属性以及调用对象方法.与编译期的静态行为相对,所有的静态型操作都在编译期完成,而反射的所有行为基本都是在运行时进行的,这是一 ...
- java反射机制_java反射机制的讲解
一 , 什么是java反射机制? JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象 ...
- 哪些类用来实现java反射机制_JAVA反射机制
运行时类型识别(Run-time Type Identification, RTTI)主要有两种方式,一种是我们在编译时和运行时已经知道了所有的类型,另外一种是功能强大的"反射"机 ...
- JAVA的反射机制==用反射分析类的实现
反射的概念:能够分析具体类的能力的程序称为反射 (JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及 ...
- java类加载机制、反射、动态代理详解
类的加载.连接和初始化(系统可能在第一次使用某个类时加载该类, 也可能采用预加载机制来加载某个类)动态代理实现 1.JVM和类 当调用 java 命令运行某个 Java 程序时, 该命令将会启动一个 ...
- java 内省机制_Java反射及 IoC原理、内省机制
JAVA反射及IoC原理.JAVA内省 1. 反射反射是框架设计的灵魂,使用前提:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码文件). 1.1 反射概述主要指程序可 ...
- Java反射机制01_反射的概念以及获取字节码信息 的四种方式
Java反射机制01-反射的概念以及获取字节码信息 的四种方式 一.反射的概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象, 都能够调用它的任意 ...
- 什么是反射机制?反射机制有什么作用?
定义 反射机制是Java语言中一个非常重要的特性,它允许程序在运行时进行自我检查,同时也允许其对内部成员进行操作.由于反射机制能够实现在运行时对类进行装载,因此能够增加程序的灵活性,但是不恰当地使用反 ...
最新文章
- ntp时间服务器配置
- UDP socket programming in php
- QML基础类型之int
- Python3学习笔记(一)简介 、 安装 、 解释器
- window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
- 软件工程---1.概述
- 显示器驱动有什么用_科普一下:电脑显示器用什么接口好,主流接口有哪些?...
- 江浙沪地区计算机考研高效排名,京津冀,江浙沪地区院校盘点!
- 1045. Favorite Color Stripe (30)
- selenium+python设置爬虫代理IP的方法
- 博客营销之博客平台的选择和优化
- Python文件中,reload(sys)找不到的问题
- QQ去除未读状态的动画
- Spring Gateway 报错java.lang.IllegalStateException: COMPLETED 解决
- DevpTips【powerpoint】发现打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿。
- 行为识别阅读笔记(paper + parted code):Beyond Frame-level CNN Saliency-Aware 3-D CNN with LSTM for Video Acti
- 【抖音视频剪辑】台词找影片素材,剪视频必备
- 3.2 语音和语言处理简史
- 2020-11-05T09:00:00+08:00 类型的时间格式化处理(时间转换)
- java基础之包_繁星漫天_新浪博客
热门文章
- BZOJ 1079: [SCOI2008]着色方案 记忆化搜索
- mysql中的order by
- 在本地生成ssh-key 免密码远程clone GitLab中的项目到本地
- CODEVS——T 1049 棋盘染色
- U启动安装原版Win7系统教程
- httpclient发起https请求以及获取https返回内容
- JS中showModalDialog详细使用
- 解析高校网络管理员如何制作网络电视墙
- CVE-2015-1635(MS15-034)-HTTP.sys远程代码执行复现
- Electric device abnormal detection based on IoT and knowledge graph-学习笔记