zoukankan      html  css  js  c++  java
  • 使用反射调用私有方法

    1.创建一个Person类,写几个方法

    package seday18c;
    /**
     * @author xingsir
     * 创建一个Person类,写几个方法
     */
    public class Person {
    	public void eat() {
    		System.out.println("我在吃");
    	}
    	public void run() {
    		System.out.println("我在跑");
    	}
    	//加个私有方法,用于测试
    	private void eat(String name) {
    		System.out.println("我是"+name+",我在吃");
    	}
    	public void eat(String name,int count) {
    		System.out.println("我是"+name+",我在吃"+count+"只牛蛙");
    	}
    
    }
    

      2.使用反射调用私有方法

    package seday18c;
    
    import java.lang.reflect.Method;
    
    /**
    * @author xingsir
    * 使用反射调用私有方法
    */
    public class ReflectDemo5 {
    
    	public static void main(String[] args) throws Exception {
              //通过Class的静态方法forName加载Person
    		Class cls=Class.forName("seday18c.Person");
    		//实例化对象的方法
    		Object o=cls.newInstance();
    		/*
    		 * 在类的外部通过反射调用私有方法会破坏封装性如不是必要操作或设计需求,不建议这样做。
    		 */
    		Method m= cls.getDeclaredMethod("eat",String.class);
    		//在访问私有方法前设置访问操作(不设置直接调用会报错)
    		m.setAccessible(true);
            m.invoke(o,"八戒");
    		
    	}
    
    }
    

      

  • 相关阅读:
    java-String类
    多线程的细节
    java-多线程的练习----妖,等待唤醒,代码重构,lock到condition
    javascript函数的声明和调用
    表单
    java-多线程的入门_进阶总结
    uboot命令
    u-boot移植 III
    u-boot移植 II
    汇编词典
  • 原文地址:https://www.cnblogs.com/xingsir/p/12667594.html
Copyright © 2011-2022 走看看