java反射(简述java反射的步骤)

一、反射的概述

JAVA反射机制是在运行状况中,关于恣意一个类,都能够知道这个类的一切属性和办法;关于恣意一个目标,都能够调用它的恣意一个办法和属性;这种动态获取的信息以及动态调用目标的办法的功用称为java言语的反射机制。

要想解剖一个类,必须先要获取到该类的字节码文件目标。而解剖运用的便是Class类中的办法.所以先要获取到每一个字节码文件对应的Class类型的目标.

以上的总结便是什么是反射
图片[1]-java反射(简述java反射的步骤)-小白之家

反射便是把java类中的各种成分映射成一个个的Java目标

例如:一个类有:成员变量、办法、结构办法、包等等信息,使用反射技能可以对一个类进行解剖,把个个组成部分映射成一个个目标。(其实:一个类中这些成员办法、结构办法、在参加类中都有一个类来描述)

如图是类的正常加载进程:反射的原理在与class目标。

了解一下加载的时分:Class目标的由来是将class文件读入内存,并为之创建一个Class目标。,简述java反射的步骤,本文接上文“java反射之获取类的信息办法(推荐)”,使用反射(invoke)来获取一个类中的办法来履行。

1、界说一个类,包括三个名称相同,参数不同的办法

classA{

publicvoidprint(){

System.out.println(“Hello,World”);

}

publicvoidprint(inta,intb){www.cppcns.com

System.out.println(a+b);

}

publicvoidprint(Stringa,Stringb){

System.out.println(a.toUpperCase()+”,”+b.toLowerCase());

}

}

2、使用办法的反射(invoke)别离获取该类三个办法并履行

publicclassTest{

publicstaticvoidmain(String[]args){

/**

*获取print(int,int)办法

*1、获取类的类类型

*/

Aa1=newA();

Classclazz=a1.getClass();

/**

*2、获取办法(名称、参数列表)

*getMethod()获取的是public办法

*getDeclaredMethod()获取的是自己声明的办法

*/

try{

//Methodm=clazz.getMethod(“print”,newClass[]{int.class,int.class});

Methodm=clazz.getMethod(“print”,int.class,int.class);

//办法的反射操作,用m对象进行办法调用,a1.print完全相同

//办法没有回来值回来null,有回来值回来详细的回来值

//Objectobj=m.invoke(a1,newObject[]{10,20});

Objectobj=m.invoke(a1,10,20);

System.out.println(“=====www.cppcns.com===========================================”);

Methodm2=clazz.getMethod(“print”,String.class,String.class);

m2.invoke(a1,”aaa”,”BBB”);

System.out.println(“================================================”);

Methodm3=clazz.getMethod(“print”);

m3.invoke(a1);

}catch(Exceptione){

e.printStackTrace();

}

}

}

3、完整代码

packagecom.format.test;

importjava.lang.reflect.Method;

/**

*CreatedbyFormaton2017/6/3.

*/

publicclassTest{

publicstaticvoidmain(String[]args){

/**

*获取print(int,int)办法

*1、获取类的类类型

*/

Aa1=newA();

Classclazz=a1.getClass();

/**

*2、获取办法(名称、参数列表)

*getMethod()获取的是public办法

*getDeclaredMethod()获取的是自己声明的办法

*/

try{

//Methodm=clazz.getMethod(“print”,newClass[]{int.class,int.class});

Methodm=clazz.getMethod(“print”,int.class,int.class);

//办法的反射操作,用m对象进行办法调用,a1.print完全相同

//办法没有回来值回来null,有回来值回来详细的回来值

//Objectobj=m.invoke(a1,newObject[]{10,20});

Objectobj=m.invoke(a1,10,20);

System.ouhttp://www.cppcns.comt.println(“================================================”);

http://www.cppcns.comstem.out.println(“Hello,World”);

}

publicvoidprint(inta,intb){

System.out.println(a+b);

}

publicvoidprint(Stringa,Stringb){

System.out.println(a.toUpperCase()+”,”+b.toLowerCase());

}

}

4、履行结果

以上这篇java反射之办法反射的基本操作办法便是小编分享给我们的全部内容了,期望能给我们一个参考,也期望我们多多支撑我们

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论