文档章节

java反射

天呀鲁哇
 天呀鲁哇
发布于 2015/02/11 17:54
字数 661
阅读 219
收藏 13

看了别人的那么多文章,总归不是办法;还是自己整理,按照自己的理解来!

1,Class类

    说明:此类的实例是标示正在运行的java类或者接口;Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。我们可以根据不同对象的.getClass()获得;

        例:Class backupEntityClass  = backupEntity.getClass();      

    方法说明:

       

注:我主要使用的分为5类

        1,获取class   forName

        2,实例化对象   newInstance();

        3,获得属性值(不包括继承的----一定要注意

        4,获得方法(不包括继承的)

        5,获得注解


2,Method

    说明:Method 提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。

    方法说明:  

注:我常用的:获取方法名    执行方法并获得返回值


3,Field

Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。

    我主要用的方法是:get/set  获取或设置属性值

                              getAnnotation 获得注解


4,PropertyDescriptor

PropertyDescriptor 描述 Java Bean 通过一对存储器方法导出的一个属性。


5,运用实例(Copy对象)

package com.yhy.app.basic;

import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class EntityCopyUtil {
	
	public <T>T backup(Object entity,Class<T> clazz) throws IntrospectionException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException{
		
		Class entityClass = entity.getClass();
		Field[] entityFields =entityClass.getDeclaredFields();
		
		T backupEntity = clazz.newInstance();
		Class backupEntityClass  = backupEntity.getClass();
		Field[] backupEntityFields =backupEntity.getClass().getDeclaredFields();
		
		
		for(Field ef:entityFields){
			for(Field bef:backupEntityFields){
				if(ef.getName().equals(bef.getName())){
					 PropertyDescriptor epd = new PropertyDescriptor(ef.getName(),entityClass);
					 Method getMethod = epd.getReadMethod();//获得get方法
					 
					 PropertyDescriptor bepd = new PropertyDescriptor(bef.getName(),backupEntityClass);
					 Method setMethod = bepd.getWriteMethod();//获得set方法
					 setMethod.invoke(backupEntity, getMethod.invoke(entity));
				}
			}
		}
		
		return (T) backupEntity;
	}
}

                              

注:上面例子有一个漏洞;我们无法复制父类的属性;那么我们使用的时候怎么解决呢?通过getsuperClass再重新做一次getfiles来实现;


图片都是从API上截取的,一直热衷于API文档  从未被超越!嘿嘿


6,AccessibleObject

    

    

AccessibleObject 类是 Field、Method 和 Constructor 对象的基类。它提供了将反射的对象标记为在使用时取消默认 Java 语言访问控制检查的能力。对于公共成员、默认(打包)访问成员、受保护成员和私有成员,在分别使用 Field、Method 或 Constructor 对象来设置或获取字段、调用方法,或者创建和初始化类的新实例的时候,会执行访问检查。 

© 著作权归作者所有

共有 人打赏支持
天呀鲁哇
粉丝 8
博文 98
码字总数 42007
作品 0
长宁
程序员
最最最常见的Java面试题总结——第二周

String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性   String类中使用字符数组:保存字符串,所以String对象是...

Amsour丶
08/13
0
0
云妹总结了一些最最最常见的Java面试题供大家参考

云妹导读:String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性 String类中使用字符数组:private final cha...

阿里云科技快讯
08/17
0
0
Android 4.4(KK)中利用APP打开关闭数据流量

在Android 4.4中,在app中打开或关闭数据流量 如果有这方面需求可以参考。 思路 利用JAVA的反射机制(Reflection),来调用CONNECTIVITY_SERVICE完成相关操作。 关于JAVA的反射机制,可以参考...

W_X
2014/12/17
0
4
JDK 9 中有哪些 jmod 文件?

JDK 9 jmods 目录中有97个jmod文件,这些文件都是干嘛的呢?我们在写代码的时候,都应该怎么用呢? 「Project Jigsaw,或者说Java Modularity想要解决的问题,其实在它的项目官网上有非常精确...

程序员诗人
2017/09/23
0
0
Java基础之反射(非常重要)

反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道...

Java-老刘
05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

中国发布域名系统基础软件 “红枫”

9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软件 “红枫(Maple DNS)”。 9月12日消息,域名工程中心(英文缩写 ZDNS)发布了宣称自主开发的域名系统基础软...

问题终结者
28分钟前
1
0
Shell编程(分发系统介绍、expect远程登录、expect远程执行命令、expect传递参数)

分发系统介绍expect 分发系统expect即分发脚本,是一种脚本语言;通过他可以实现传输,输入命令(上线代码) 应用场景:业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者...

蛋黄_Yolks
33分钟前
1
0
Java Http请求工具类

public static String httpPost(String source, String params) {URL url = null;HttpURLConnection conn = null;OutputStream os = null;String ret = null;try {......

yuewawa
40分钟前
1
0
C++11 智能指针

C++11提供了三个智能指针,std::shared_ptr,std::unique_ptr,std::weak_ptr。最常用的是shared_ptr和unique_ptr。 (1)std::shared_ptr shared_ptr是共享指针,通过在控制块中增加引用计数...

yepanl
41分钟前
1
0
React 服务器渲染原理解析与实践

网盘下载地址 React 服务器渲染原理解析与实践 本套课程,讲解了React中SSR技术的整个搭建思路及流程,完整的从原理上讲清楚了SSR的概念,重点在于讲解编写SSR框架遇到的各种知识点,以及细节...

qq__2304636824
52分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部