通过反射获取私有方法

1,如何通过反射获取无参方法

Java代码  

  1. /**** 
  2.        * 我通过反射获取的 
  3.        * @return 
  4.        */  
  5.       public JTextArea getTextArea(){  
  6.           Class clazz=MainView.class;  
  7.           Object obj=null;  
  8.             Method m;  
  9.             try {  
  10.                 m = clazz.getDeclaredMethod("getTextArea", new Class[]{});  
  11.                 m.setAccessible(true);  
  12.                 obj=m.invoke(this, null);  
  13.             } catch (NoSuchMethodException e) {  
  14.                 e.printStackTrace();  
  15.             } catch (SecurityException e) {  
  16.                 e.printStackTrace();  
  17.             } catch (IllegalAccessException e) {  
  18.                 e.printStackTrace();  
  19.             } catch (IllegalArgumentException e) {  
  20.                 e.printStackTrace();  
  21.             } catch (InvocationTargetException e) {  
  22.                 e.printStackTrace();  
  23.             }  
  24.             return (JTextArea)obj;  
  25.       }  

 注意:

下图是错误的:

 

 

2,如何通过反射获取有参方法

Java代码  

  1. /**** 
  2.        * 我通过反射获取的 
  3.        * @return 
  4.        */  
  5.       public void formatJson(){  
  6.           Class clazz=MainView.class;  
  7.           Object obj=null;  
  8.             Method m;  
  9.             try {  
  10.                 m = clazz.getDeclaredMethod("formatJson", new Class[]{String.class,boolean.class});  
  11.                 m.setAccessible(true);  
  12.                 obj=m.invoke(this, null);  
  13.             } catch (NoSuchMethodException e) {  
  14.                 e.printStackTrace();  
  15.             } catch (SecurityException e) {  
  16.                 e.printStackTrace();  
  17.             } catch (IllegalAccessException e) {  
  18.                 e.printStackTrace();  
  19.             } catch (IllegalArgumentException e) {  
  20.                 e.printStackTrace();  
  21.             } catch (InvocationTargetException e) {  
  22.                 e.printStackTrace();  
  23.             }  
  24.       }  
  25.         

 

时间: 2025-01-31 01:17:38

通过反射获取私有方法的相关文章

Java中反射获取私有构造函数、属性、方法

在学习Spring框架基础 Bean包时,写了一个简单的例子,类似如下: package study.spring.bean; public class SimpleBean { private String beanName; private SimpleBean() { System.out.println( " SimpleBean " ); } /** */ /** * @return Returns the beanName. */ public String getBean

Java Reflection(七):私有变量和私有方法

原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com) 内容索引访问私有变量访问私有方法 在通常的观点中从对象的外部访问私有变量以及方法是不允许的,但是Java反射机制可以做到这一点.使用这个功能并不困难,在进行单元测试时这个功能非常有效.本节会向你展示如何使用这个功能. 注意:这个功能只有在代码运行在单机Java应用(standalone Java application)中才会有效,就像你做单元测试或者一些常规的应用程序一样.如果你在Java App

利用java反射机制调用类的私有方法(推荐)_java

试想一下,如果你可以轻易地调用一个类的私有方法,那么是不是说你的封装都失效了?最近在看java的反射机制,发现居然可以利用java的反射机制去调用其他类的私有方法,至于这能干什么,那就见人见智了.. 我写的一段简易实例代码如下: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * @author thomaslwq * @version 创建时间:Sep 4, 201

利用反射获取方法参数对象的泛型定义

问题描述 利用反射获取方法参数对象的泛型定义 public CommonRsp<AAARsp> hotelCheckAvailability(CommonReq<BBBReq> req) throws Exception; 如何通过反射获取如上方法中的参数泛型定义BBBReq? 解决方案 你这是java语法吗,如果是的话,其实java的泛型本质上是糖衣语法,编译后泛型是会被擦除的.你获取泛型本质上是没有意义的,应该是获取不到的.

PHP通过反射方法调用执行类中的私有方法

PHP 5 具有完整的反射 API,添加了对类.接口.函数.方法和扩展进行反向工程的能力. 下面我们演示一下如何通过反射,来调用执行一个类中的私有方法: <?php   //MyClass这个类中包含了一个名为myFun的私有方法 class MyClass {         private $tmp = 'hello';         private function myFun()     {         echo $this->tmp . ' ' . 'world!';    

Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据

  package me.test; import java.lang.reflect.*;  //导入反射需要的包 public class ReflectTest {  public static void main(String[] args)  throws  Exception  {       /*  下面通过反射完成对一个对象中成员的替换    *   并且执行执行私有方法     *   完成对 Poiont类的对象中所有的 String的对象的d换成x    *   并且类中无

Java反射获取方法参数名

问题 在编写一个jws(游戏中心的WEB框架)增强工具的时候,需要得到方法的参数名,而jws本身是可以获取参数名的(不然controller里将请求参数与方法参数绑定的功能也无法实现了). 但使用了jws提供的获取参数名方法时,却出现返回的参数名不正确的问题(只会出现在idea里面): 所以说: 为什么可以获取方法参数? 为什么eclipse和生产环境里不会发生这种问题? 怎样可以正确获取方法的参数名? 问题排查 获取方法参数 众所周知,在java里面,直到java8才可以正式的通过反射获取方法

使用反射获取字节码文件中的方法

public class ReflectMethod { /** * 方法的反射 * @param args */ public static void main(String[] args) throws Exception { String str1="www.baidu.com"; System.out.println(str1.charAt(2)); //我们平时的时候是使用str1.charAt()去调用的方法,然后获取到第二个字符 /** * String str1=&qu

go语言通过反射获取和设置结构体字段值的方法_Golang

本文实例讲述了go语言通过反射获取和设置结构体字段值的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: type MyStruct struct {         N int } n := MyStruct{ 1 } // get immutable := reflect.ValueOf(n) val := immutable.FieldByName("N").Int() fmt.Printf("N=%d\n", val) // prints