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,"八戒");
    		
    	}
    
    }
    

      

  • 相关阅读:
    SVN版本控制器的使用说明(详细过程)
    tomcat服务器的搭建
    git以及gitHub的使用说明书
    gulp的简单使用
    SASS的应用
    springmvc常用注解
    js创建对象的方法
    SVG入门
    http状态码全解
    Ajax参数详解
  • 原文地址:https://www.cnblogs.com/xingsir/p/12667594.html
Copyright © 2011-2022 走看看