Java反射机制是Java程序在运行状态下,动态获取类中的内容以及动态调用对象的方法。此篇是对Java反射机制的一些基础代码操作的简单总结。

1.Java反射机制概述

 Java反射机制就是在Java程序运行时,得到一个java类中的属性和方法;并可以调用已经给定对象的类中的构造方法、属性和方法。放射机制就是就像这样动态的获取类中构造方法、属性和方法以及动态调用对象的方法。

2.Java反射机制基础内容

 正常情况下如果已经有一个类,则可以通过类创建对象;那么如果想通过一个对象找到一个类的名称,就需要反射机制。

2.1 简单理解放射机制

 正常情况:引入需要的包—> new实例化—> 取得实例化对象
 反射方式:实例化对象—> 使用getclass()方法—>获取完整的“包.类”名称

2.2 静态实例化class方法

首先声明class对象

Class<?> c = null;

第一种:通过forName()方法

c = Class.forName(“包名.类名”) ;

此种方法最为灵活,因为只需要用字符串的方式当参数即可。

第二种:通过“类.class”方法

c = 类名.class;

第三种:通过“对象.getClass()”方法

c = new 类名().getClass();

2.3 实例化对象

注:以下所写的方法都是在上面第一种实例化之后的操作。

Class X{public String a;public int b;public double c;public int y;public String X(int arg){}public String X(){}public String W(String a,int b,double c){this.a = a;this.b = b;this.c = c;return a+“:”+b+“:”+c;}
}注:以下的操作都是对X类操作
(1)通过无参构造实例化对象操作范例:X x = (X) c.newInstance();对象x就和正常方法实例化的对象使用一样。重点注意:1.使用此方法时,被实例化对象的类中必须含有无参构造方法;2.强制转化是因为:反射机制的一切的操作都将使用object完成。
(2)通过有参构造实例化对象操作步骤为:1.通过Class类中的getConstructors()获取类中全部构造方法;2.向构造方法中传递一个对象数组,其中包含构造方法所需的全部参数;3.然后通过Constructor实例化一个对象。操作范例为:Constructor<?> cons[] = c.getConStructors();//通过反射,获取全部构造方法将其赋值给构造方法数组。实例化过程:X x = (X) cons[0].newInstance(1);

2.4获取类的结构

将会使用到java.lang.reflect包,其中包含的功能有:
 Field:表示获取的类中属性。
 Method:表示获取的类中方法。
(1)获取属性
 ①获取父类或接口的属性

public Field[] getFields() throws SecurityException;

 ②获取此类的属性

public Field[] getDeclaredFields() throws SecurityExceptions;

 代码示例:

Filed f[] = c.getDeclaredFields();//获取本类中的属性
Class<?> r = f[0].getType();//获取属性类型
int m = f[0].getModifiers();//获取权限的编号
String pri = Modifier.toString(m); //将权限转化为修饰符

(2)获取类中的方法并对其进行调用
 ①获取方法的Class方法为

public Method[] getMethods() throws SecurityException;

 ②通过反射机制调用类中方法:

public object invoke(Object obj,Object ...args);

 代码如下:

Class<?> c=Class.forName(“X”);
Method m = c.getMethod(“W”,String.class,int.class,double.class);//参数的个数与类型根据实际方法
Stringrs=(String)m.invoke(c.newInstance(),"小哈",20,3.2);//调用方法

3.小结

 在计算机领域中,反射是指程序可以访问、检测和修改它本身状态和行为的能力。反射机制是java提供的一项强大功能,是一种实现面向抽象编程的方式,其使代码语句更加灵活,极大的提高代码的运行时装配能力。此上是通过对class类中的一些方法从而对反射机制进行的初步了解。

简单明了的java反射机制相关推荐

  1. java反射机制的原理与简单使用

    一. 原理 简单的来说,反射机制其实就是指程序在运行的时候能够获取自身的信息.如果知道一个类的名称/或者它的一个实例对象, 就能把这个类的所有方法和变量的信息(方法名,变量名,方法,修饰符,类型,方法 ...

  2. java反射机制的简单使用和优缺点

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

  3. Java反射机制(简单易懂)

    文章目录 前言 一.反射机制 二.反射的用途 三.反射相关的类(重要) 3.1 Class类(反射机制的起源 ) 3.2 通过反射调用构造方法 3.3 通过反射调用普通方法 3.4 通过反射调用类属性 ...

  4. Java反射机制Reflection

    Java反射机制 1 .class文件 2 Class类 3 Class类与反射机制 4 Java反射机制的类库支持及简介 5 反射机制的定义与应用 6 反射机制Demo Java反射机制demo(一 ...

  5. Java反射机制剖析(一)-定义和API

    1.     什么是Java反射机制 Java的反射机制是在程序运行时,能够完全知道任何一个类,及其它的属性和方法,并且能够任意调用一个对象的属性和方法.这种运行时的动态获取就是Java的反射机制.其 ...

  6. 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换

    作者:54dabang 在spring的学习过程之中,我们能够看出通过配置文件来动态管理bean对象的优点(松耦合 能够让零散部分组成一个总体,而这些总体并不在意之间彼此的细节,从而达到了真正的物理上 ...

  7. java基础-java反射机制

    2019独角兽企业重金招聘Python工程师标准>>> 引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩" ...

  8. 利用java反射机制进行对象操作

    我们经常使用COMMONS-BEANUTILS包来进行bean的操作,例如从map到bean获从bean到map的映射,那么实现的原理是什么呢,下面举个简单的操作的例子:首先,我建立一个bean pu ...

  9. Java反射机制及API使用

    原文地址 反射简单来说,就是动态加载对象,并对对象进行剖析.在Java中的反射机制是指在运行状态中,对于任意一个类,都能够知道并获取这个类的所有属性和方法. Java反射机制的作用: 在运行时判断任意 ...

  10. Java反射机制demo(四)—获取一个类的父类和实现的接口

    2019独角兽企业重金招聘Python工程师标准>>> Java反射机制demo(四)-获取一个类的父类和实现的接口 1,Java反射机制得到一个类的父类 使用Class类中的get ...

最新文章

  1. 正确修改MySQL最大连接数的三种好用方案
  2. C++基本操作符重载
  3. java中的stack类和C++中的stack类的区别
  4. 数据结构与算法——树与二叉树详细分享
  5. 【iBoard电子学堂】【iCore双核心板】资料光盘A盘更新,版本号为A6
  6. php 张开收缩显示,js实现可以点击收缩或张开的悬浮窗
  7. 5万字长文:Stream和Lambda表达式最佳实践-附PDF下载
  8. java int biginteger_[十六]基础类型BigInteger简介
  9. java restful开发规范_restful api 开发规范
  10. 在《Windows程序设计》中出现过的消息
  11. 足疗收银系统哪个好?
  12. Value-Decomposition Networks For Cooperative Multi-Agent Learning(VDN)
  13. 软件开发模式之敏捷开发(scrum)
  14. 阳明心学在敏捷开发中的应用
  15. ios特定界面强制横屏
  16. 调试经验——让Excel开口说话(使用VBA Speak方法让Excel朗读单元格内容)(Let Excel read for you)
  17. dp2px px2dp
  18. CCF 201409-1 相邻数对(Python100分)
  19. Ubuntu安装texlive
  20. win10下安装Ubuntu18.10双系统

热门文章

  1. openMSP430 介绍
  2. 数据与城市正义:回龙观居民“身体被掏空”问题如何解决
  3. 自适应页界面HTML源码
  4. xftp无法显示远程文件夹
  5. 架构问题--削峰填谷
  6. 机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归
  7. GraphTrans:Representing Long-Range Context for Graph Neural Networks with Global Attention
  8. getUserMedia` undefined 火狐firefox
  9. 桌面自动化实现原理-RPA+
  10. linux改-文件夹名称,linux修改文件夹名字