一、反射的概述
JAVA反射机制是在运行状况中,关于恣意一个类,都能够知道这个类的一切属性和办法;关于恣意一个目标,都能够调用它的恣意一个办法和属性;这种动态获取的信息以及动态调用目标的办法的功用称为java言语的反射机制。
要想解剖一个类,必须先要获取到该类的字节码文件目标。而解剖运用的便是Class类中的办法.所以先要获取到每一个字节码文件对应的Class类型的目标.
以上的总结便是什么是反射
反射便是把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反射之办法反射的基本操作办法便是小编分享给我们的全部内容了,期望能给我们一个参考,也期望我们多多支撑我们
Tips:本站所有资源均收集自互联网,分享目的仅供学习参考,资源版权归该资源的合法拥有者所有。
Tips:若本站所发布的资源侵犯到您的合法权益,请及时联系 hqteam@qq.com 删除!
暂无评论内容