【转-整理】Java反射机制

概念

主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。

反射机制作用

1、反编译:.class-->.java

2、通过反射机制访问java对象的属性,方法,构造方法等;

Sun提供反射机制类

java.lang.Class;

java.lang.reflect.Constructor;

java.lang.reflect.Field;

java.lang.reflect.Method;

java.lang.reflect.Modifier;

反射实现

1、反射实现方式有三种

 1 //第一种方式:
 2 Classc1 = Class.forName("Employee");
 3 //第二种方式:
 4 //java中每个类型都有class 属性.
 5 Classc2 = Employee.class;
 6
 7 //第三种方式:
 8 //java语言中任何一个java对象都有getClass 方法
 9 Employeee = new Employee();
10 Classc3 = e.getClass(); //c3是运行时类 (e的运行时类是Employee)  

2、获取类后,使用newInstance来创建对象

1 Class c =Class.forName("Employee");
2
3 //创建此Class 对象所表示的类的一个新实例
4 Objecto = c.newInstance(); //调用了Employee的无参数构造方法.  

3、获取属性

  ①获取所有属性

  

 1 //获取整个类
 2             Class c = Class.forName("java.lang.Integer");
 3               //获取所有的属性?
 4             Field[] fs = c.getDeclaredFields();
 5
 6                    //定义可变长的字符串,用来存储属性
 7             StringBuffer sb = new StringBuffer();
 8             //通过追加的方法,将每个属性拼接到此字符串中
 9             //最外边的public定义
10             sb.append(Modifier.toString(c.getModifiers()) + " class " + c.getSimpleName() +"{\n");
11             //里边的每一个属性
12             for(Field field:fs){
13                 sb.append("\t");//空格
14                 sb.append(Modifier.toString(field.getModifiers())+" ");//获得属性的修饰符,例如public,static等等
15                 sb.append(field.getType().getSimpleName() + " ");//属性的类型的名字
16                 sb.append(field.getName()+";\n");//属性的名字+回车
17             }
18
19             sb.append("}");
20
21             System.out.println(sb);  

  ②获取指定属性

  

 1 public static void main(String[] args) throws Exception{
 2
 3 <span style="white-space:pre">  </span>//以前的方式:
 4     /*
 5     User u = new User();
 6     u.age = 12; //set
 7     System.out.println(u.age); //get
 8     */
 9
10     //获取类
11     Class c = Class.forName("User");
12     //获取id属性
13     Field idF = c.getDeclaredField("id");
14     //实例化这个类赋给o
15     Object o = c.newInstance();
16     //打破封装
17     idF.setAccessible(true); //使用反射机制可以打破封装性,导致了java对象的属性不安全。
18     //给o对象的id属性赋值"110"
19     idF.set(o, "110"); //set
20     //get
21     System.out.println(idF.get(o));
22 }  

4、获取方法,和构造方法,不再详细描述,只来看一下关键字:


方法关键字


含义


getDeclaredMethods()


获取所有的方法


getReturnType()


获得方法的放回类型


getParameterTypes()


获得方法的传入参数类型


getDeclaredMethod("方法名",参数类型.class,……)


获得特定的方法


构造方法关键字


含义


getDeclaredConstructors()


获取所有的构造方法


getDeclaredConstructor(参数类型.class,……)


获取特定的构造方法


父类和父接口


含义


getSuperclass()


获取某类的父类


getInterfaces()


获取某类实现的接口

时间: 2024-08-06 07:51:50

【转-整理】Java反射机制的相关文章

JAVA基础整理-80.Java反射机制

Java什么是反射机制?反射机制的概念 在 ORM (Object Relational Mapping 对象关系映射)中间件的实现中,运用 java 反射机制可以读取任意一个 JavaBean 的所有属性,或者给这些属性赋值. Class labelCls=label1.getClass(); //label1为 JLabel 类的对象 Java反射在类中的应用: 通过反射访问构造函数(方法) 为了能够动态获取对象构造方法的信息,首先需要通过下列方法之一创建一个 Constructor 类型的

Java知识总结:Java反射机制(用实例理解)

概念理解: 反射是指一类应用,它们能够自描述和自控制.也就是说,这类应用通过采用某种机制来 实现对自己行为的描述( self-representation )和检测( examination) ,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. Java中的反射是一个强大的工具,他能够创建灵活的代码,这些 代码可以在运行时装配,无需在组件之间进行链接,发射允许在编写和执行时,使程序代码能够接入装载到 JVM 中的类的内部信息 .而不是源代码中选定的类协作的代码.这使发射

粗浅看 java反射机制

什么是  Java 反射是 Java 被视为动态(或准动态)语言的一个关键性质.这个机制允许程序在运 行时透过 Reflection APIs 取得任何一个已知名称的class 的内部信息,包括其 modifiers( 诸如 public, static 等 ).superclass (例如 Object). 实现之 interfaces(例如 Cloneable),也包括 fields 和 methods 的所有信息,并可于运行时改变 fields 内容或唤起 methods. Java 反射

hibernate继承关系映射和java反射机制的运用

转:http://blog.csdn.net/derpvailzhangfan/article/details/1957946 ,感谢博主分享 Notes:hibernate元数据的运用:uuid的概念:java的反射机制,“因为抽象类无法new出对象来,所以就要用java反射机制”,“TcommTable tomm = (TcommTable) Class.forName(allName).newInstance();”: hibernate继承关系映射大概有5种,这5种继承关系映射里面,我觉

简谈Java 反射机制,动态代理

谈谈 Java 反射机制,动态代理是基于什么原理?小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:701136382 这是小编创建的java高阶学习交流群,加群一起交流学习深造.群里也有小编整理的2019年最新最全的java高阶学习资料! 反射机制 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力.可以在运行时通过提供完整的"包名+类名.class"得到某个对象的类型. 功能 在运行时能判断任意一个对象所属的

Java反射机制大神必学系列之 ,高级与低级的差别在哪里?

Java反射机制大神必学系列之 ,高级与低级的差别在哪里?java学习爱好者 2019-05-20 19:08前言今天介绍下Java的反射机制,以前我们获取一个类的实例都是使用new一个实例出来.那样太low了,今天跟我一起来学习学习一种更加高大上的方式来实现. 正文Java反射机制定义 Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制.

一文带你了解Java反射机制

想要获取更多文章可以访问我的博客?-?代码无止境. 上周上班的时候解决一个需求,需要将一批数据导出到Excel.本来公司的中间件组已经封装好了使用POI生成Excel的工具方法,但是无奈产品的需求里面有个合并单元格的要求,工具类中找了半天也没发现适用的方法,就只能自己撸起袖子干了.导出Excel的工具方法会少不了使用反射,但是反射这东西对于我这种写业务代码的人来说接触比较少,所以就恶补了一下,写下这篇文章记录一下. 什么是反射 万物究其根,研究一样新东西,首先我们需要了解它是什么,干什么用的.在

java反射机制(一)—— 利用反射机制实例化对象

一.Java有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载.探知.使用编译期间完全未知的classes.换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体.或对其fields设值.或唤起其methods.(度娘文库是这么说的) 二.这篇文章主要介绍一下通过反射机制去实例化一个类的对象,然后调用其方法.本文主要介绍两种方式,第一种就是通过构造函数来实例化,第二种就是通过Cl

【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】

方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; private String name; private Boolean flag; public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public String getNam

Java 反射机制

使用 Java 反射机制可以在运行时期检查 Java 类的信息,检查 Java 类的信息往往是你在使用 Java 反射机制的时候所做的第一件事情,通过获取类的信息你可以获取以下相关的内容: Class 对象 类名 修饰符 包信息 父类 实现的接口 构造器 方法 变量 注解 除了上述这些内容,还有很多的信息你可以通过反射机制获得,如果你想要知道全部的信息你可以查看相应的文档 JavaDoc for java.lang.Class 里面有详尽的描述. 在本节中我们会简短的涉及上述所提及的信息,上述的