首页 > 代码库 > Java中的反射
Java中的反射
反射,以前听说过,一致认为,需要什么样的类,就写什么样的类,不就成了,何必去探究别人类中元素,所以一直没学习关于反射的东西,直到前几天看到修改ListView的快速滑块图像,看到需要用到反射
昨天也就看了看反射
先说概念
反射就是加载一个运行时才得知名称的类,获悉其完整构造,并生成对象尸体,或对其变量设置或调用方法
通俗地说就是了解类和修改类
了解类就是
从构造方法 、成员变量、方法、各元素的修饰符了解类
测试类:
package test; public class MyObject { public int a ,b; public MyObject(){ } public MyObject(int a, int b) { super(); this.a = a; this.b = b; } public int sum(){ return a+b; } public int minus(){ return a-b; } public int multiply(){ return a*b; } public int divide(){ return a/b; } }
Class c = Class.forName("test.MyObject");
从构造方法
Constructor[] constructors = c.getConstructors(); for(int i = 0;i<constructors.length;i++){ System.out.println("------第"+i+"个方法----->>>"+constructors[i].toString()); System.out.println("----->>方法名:"+constructors[i].getName()); System.out.println("----->>修饰符:"+constructors[i].getModifiers()); Class p[]= constructors[i].getParameterTypes(); for(int j=0;j<p.length;j++){ System.out.println("参数j:"+p[j]); } }成员变量
Field[] fields = c.getDeclaredFields(); for(int i = 0 ;i<fields.length;i++){ Field f =fields[i]; System.out.println("------->>变量名:"+f.getName()); System.out.println("------->>变量类型:"+f.getModifiers()); System.out.println("----->>修饰符:"+f.getType()); }
方法:
Method m[] = c.getDeclaredMethods(); for(int i = 0;i<m.length;i++){ System.out.println("------第"+i+"个方法----->>>"+m[i].toString()); System.out.println("----->>方法名:"+m[i].getName()); System.out.println("----->>修饰符:"+m[i].getModifiers()); System.out.println("------>>返回值 :"+m[i].getReturnType()); Class p[]= m[i].getParameterTypes(); for(int j=0;j<p.length;j++){ System.out.println("参数j:"+p[j]); } }从上述几个方面去了解类
下面就是通过反射去应用类
//创建类的对象 Class[]p = new Class[2]; p[0]=int.class; p[1]=int.class; Constructor constructor =c.getConstructor(p); Object object = constructor.newInstance(34 ,90); //修改成员变量 Field fielda= c.getField("a"); System.out.println("----->>改变前:"+fielda.get(object)); fielda.setInt(object, 190); System.out.println("----->>改变后:"+fielda.get(object)); //调用类的方法 Method method1 = c.getMethod("sum"); Object sum = method1.invoke(object); System.out.println("--->>加=="+sum);
Java中的反射
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。