博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反射中getMethods 与 getDeclaredMethods 的区别
阅读量:6956 次
发布时间:2019-06-27

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

public Method[] getMethods()返回某个类的所有公用(public)方法包括其继承类的公用方法,当然也包括它所实现接口的方法。

public Method[] getDeclaredMethods()对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。当然也包括它所实现接口的方法。

 

public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, InstantiationException  {        Bean bean = new Bean("QQ", 18);        System.out.println(bean);        //使用反射        String className = "com.my.test.Bean";                Class
clas = (Class
) Class.forName(className); //生成一个实例 Bean b = (Bean)clas.newInstance(); b.setAge(20); b.setName("WW"); System.out.println(b); //调用方法 clas.getMethod("setName", String.class).invoke(bean, "Jerry"); clas.getMethod("setAge", int.class).invoke(bean, 25); System.out.println("After reflection....\n" + bean); }

 

【转】使用反射动态执行方法例子:

java利用反射动态执行类方法Person类 public class Person { String name; String day; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDay() { return day; } public void setDay(String day) { this.day = day; } public void printlinfo() throws RuntimeException, IOException{ System.out.println(name); System.out.println(day); String url="http://www.163.com";    openURL(url); } public void openURL (String url)throws RuntimeException,IOException{ String urlx=null; urlx="rundll32 url.dll,FileProtocolHandler "+url; Process p=Runtime.getRuntime().exec(""+urlx); } } 利用反映动态执行类的方法 public static void print(byte[] b1,String tname,String tday) throws InstantiationException, IllegalAccessException, SecurityException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException {         MyClassLoade myClassLoader=new MyClassLoade();         Class c = myClassLoader.defineClass("Person", b1);         System.out.println(c.getName());         Object object= c.newInstance();         Field[] fields=c.getDeclaredFields();         System.out.println(fields.length);         String args="java.lang.String";         Method method1= c.getDeclaredMethod("setName", args.getClass()) ;         method1.invoke(object,new Object[] {tname});         Method method2= c.getDeclaredMethod("setDay", args.getClass()) ;         method2.invoke(object,new Object[] {tday});             Method method = c.getDeclaredMethod("printlinfo", null) ;         method.invoke(object);            } 参考:利用反射实现JavaBean的自动赋值 import java.lang.reflect.Method; import java.util.*; import javax.servlet.http.HttpServletRequest; import com.sns.exception.ApplicationException; public final class ParameterUtil { public static void setFormBean(HttpServletRequest request, Object bean) { Class c = bean.getClass(); Method[] ms = c.getMethods(); for(int i=0; i

转载地址:http://kvmil.baihongyu.com/

你可能感兴趣的文章
你所不了解的静态路由特点及配置
查看>>
SQL条件查询及数据类型cast转换
查看>>
多套方案来提高python web框架的并发处理能力
查看>>
不好,两群AI打起来了!“幕后主使”是上海交大~
查看>>
图解RHEL6从安装光盘中进行yum安装
查看>>
2016年第11本:效率高手‘6不’诀
查看>>
Eclipse 实用技巧
查看>>
linux下踢掉一个用户(心跳包解决ssh断开连接)
查看>>
ZedGraph很好很强大
查看>>
遍历ArrayList易犯错误
查看>>
图像保存到XML文件和从XML中取出图像显示
查看>>
优化游标性能
查看>>
博客文章 快速通道
查看>>
【转】JavaScript写的Cookie类
查看>>
[转]Vi/Vim查找替换使用方法
查看>>
Visual Studio .NET 2003 IDE 快捷键(转)
查看>>
[转] 使用SVN进行源码管理
查看>>
POSIX 线程的创建与退出
查看>>
Android Fragment间对象传递
查看>>
如何去高大上的下载电影天堂的内容
查看>>