zoukankan      html  css  js  c++  java
  • 反射机制调用无参和有参方法以及调用私有方法

    package reflect;
    
    public class Person {
    	
    	public void sayHello() {
    		System.out.println("HelloJava");
    	}
    	public void sayName() {
    		System.out.println("大家好");
    	}
    	public void sayAge(int age) {
    		System.out.println("我的年龄是:"+age+"岁了...");
    	}
    	public void say(String name,int age) {
    		System.out.println("我叫"+name+",我今年"+age+"岁了。");
    	}
    	private void domose() {
    		System.out.println("我是Preson类的私有方法...");
    		
    	}
    }
    

      

      调用person类中无参方法

    package reflect;
    
    import java.lang.reflect.Method;
    /**
     * 通过反射机制调用某个类的某个方法
     */
    
    public class ReflectDemo1 {
    	public static void main(String[] args) throws Exception  {
    		
    		Class cls = Class.forName("reflect.Person");
    		//接收的是一个Person的实例
    		Object o =cls.newInstance();
    		/*
    		 * 通过该Class实例可以获取其表示的类的相关方法
    		 * 获取Person的sayHello方法
    		 * 
    		 */
    		Method method =cls.getDeclaredMethod("sayHello", null);
    		method.invoke(o, null);
    	}
    
    }
    

      调用person类中有参方法

    package reflect;
    
    import java.lang.reflect.Method;
    
    /**反射调用有参方法
    * 
    */
    public class ReflectDemo3 {
    public static void main(String[] args) throws Exception {
    Class cls = Class.forName("reflect.Person");
    Object o =cls.newInstance();
    Method method=cls.getDeclaredMethod("sayAge",new Class[] {int.class});
    
    method.invoke(o, new Object[] {20});
    
    Method method1=cls.getDeclaredMethod("say",new Class[] {String.class,int.class});
    method1.invoke(o,new Object[] {"zhangsan",18});
    }
    
    }
    

      

    调用Person类中的私有方法

    package reflect;
    
    import java.lang.reflect.Method;
    
    //反射机制调用私有方法
    public class ReflectDemo4 {
    	public static void main(String[] args) throws Exception  {
    		Class cls = Class.forName("reflect.Person");
    		Object o =cls.newInstance();
    		Method method=cls.getDeclaredMethod("domose",null);
    		//强制要求访问该方法  setAccessible(true);
    		method.setAccessible(true);
    		method.invoke(o, null);
    		
    	}
    
    }
    

      

      

  • 相关阅读:
    Zk学习笔记——权限控制
    guava学习笔记
    Elasticsearch学习笔记——别名
    Kafka学习笔记——存储结构
    分布式协议——Paxos、Raft和ZAB
    图解 Java 中的数据结构及原理!
    牛逼哄哄的 Lambda 表达式,简洁优雅就是生产力!
    你必须了解Spring的生态
    盘点 35 个 Apache 顶级项目,我拜服了…
    前后端分离如何做权限控制设计?
  • 原文地址:https://www.cnblogs.com/xyk1987/p/8350528.html
Copyright © 2011-2022 走看看