博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java反射机制
阅读量:6878 次
发布时间:2019-06-26

本文共 2831 字,大约阅读时间需要 9 分钟。

1:获取class的方法

Class class1=Test.class;Class
class2=new Test().getClass();Class class3=Class.forName("com.包名.Test");

2:getMetohd(),getDeclaredMethod()的区别

  

import android.util.Log;public class Test {    private String name;    private String age;    public Test() {    }    private Test(String name, String age) {        this.name = name;        this.age = age;    }    private void getAge(String age){        Log.d("Tag:", "getAge: 打印getAge方法:");    }    private void getName(String age){        Log.d("Tag:", "getName: 打印getName方法:");    }    public void getTest1(int s){        Log.d("Tag: ", "getTest1 方法: ");    }    public void getTest2(int a,int a2){        Log.d("Tag:", "getTest2 方法: ");    }}
Method[] methods=class1.getMethods();   for (int i = 0; i < methods.length; i++) {         Log.d(TAG, ""+methods[i]);     }   Method[] methods1=class1.getDeclaredMethods();   for (int i = 0; i < methods1.length; i++) {       Log.d(TAG, ""+methods1[i]);     }

分别打印: 

public static transient java.lang.Object public boolean java.lang.Object.equals(java.lang.Object)public final java.lang.Class java.lang.Object.getClass()public void com..switchcolor.Test.getTest1(int)public void com..switchcolor.Test.getTest2(int,int)public int java.lang.Object.hashCode()public final native void java.lang.Object.notify()public final native void java.lang.Object.notifyAll()public java.lang.String java.lang.Object.toString()public final native void java.lang.Object.wait() throws java.lang.InterruptedExceptionpublic final void java.lang.Object.wait(long) throws java.lang.InterruptedExceptionpublic final native void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public void com.switchcolor.Test.getTest1(int)public void com.switchcolor.Test.getTest2(int,int)private void com.switchcolor.Test.getAge(java.lang.String)private void com.switchcolor.Test.getName(java.lang.String)

getMetohd()获取该类以及其父类的所有public方法。

getDeclaredMethod()获取该类的所有方法 

 

3:获取类方法

public 方法

Class class1=Class.forName("com.包名.Test");Method method=class1.getMethod("getTest1",int.class);method.invoke(class1.newInstance(),5);  

private方法: 

Method method1=class1.getDeclaredMethod("getName", String.class);method1.setAccessible(true);method1.invoke(class1.newInstance(),"s");

  

多参时:

Class[] args = new Class[1];        args[0] = String.class;        Object[] objects = new Object[1];        objects[0] = "nisdff";        try {            Object testClass = Class.forName("com.guoxw.switchcolor.Test").newInstance();            Method method = testClass.getClass().getDeclaredMethod("getName", args);            method.setAccessible(true);            method.invoke(testClass, objects);        } catch (Exception e) {            Log.d("Tag:", "onCreate: " + e.toString());        }

  

  

  

 

 

转载于:https://www.cnblogs.com/galibujianbusana/p/6043121.html

你可能感兴趣的文章
java乱码问题
查看>>
sharepoint2013信息讨论
查看>>
祝贺洪春《构建高可用Linux服务器》第二版发行!
查看>>
SQL Server 2014 许可证(三)各版本的许可证
查看>>
SFB 项目经验-15-配置会议邀请中企业信息
查看>>
Exchange 2010安装各角色先决条件的Powershell
查看>>
新书《深入理解计算机网络》可正式购买了
查看>>
我的家庭私有云计划-1
查看>>
《Java从小白到大牛》之第10章 面向对象基础(上)
查看>>
2017年我的阅读书单
查看>>
Python学习之(一)在eclipse中搭建python的开发环境
查看>>
【Linux系统安装】磁盘与分区的命名规则
查看>>
运维经验分享(七)-- Linux Shell之ChatterServer服务控制脚本第三次优化
查看>>
自定义nginx版本号
查看>>
感悟:周末实施
查看>>
Shell流程控制
查看>>
请在服务器管理器的 Tomcat 定制器中设置 manager-script 角色的正确用户名和口令。...
查看>>
SCCM TP4部署UWP应用之证书分发
查看>>
shell脚本工具之条件测试
查看>>
mysql 锁机制
查看>>