zoukankan      html  css  js  c++  java
  • 反射获取方法

    Method

    Class.getMethod(String, Class...) 和 Class.getDeclaredMethod(String, Class...)方法可以获取类中的指定方法,调用invoke(Object, Object...)可以调用该方法,Class.getMethod("eat") invoke(obj) Class.getMethod("eat",int.class) invoke(obj,10)

    public class Demo_Method {
    
        /**
         * Class.getMethod(String, Class...) 和 Class.getDeclaredMethod(String,
         * Class...)方法可以获取类中的指定方法,调用invoke(Object,
         * Object...)可以调用该方法,Class.getMethod("eat") invoke(obj)
         * Class.getMethod("eat",int.class) invoke(obj,10)
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {
            Class clazz = Class.forName("com.loaderman.bean.Person");
            Constructor c = clazz.getConstructor(String.class,int.class);//获取有参构造
            Person p = (Person) c.newInstance("张三",23);     //通过有参构造创建对象
    
            Method m = clazz.getMethod("eat");         //获取eat方法
            m.invoke(p);
    
            Method m2 = clazz.getMethod("eat", int.class);  //获取有参的eat方法
            m2.invoke(p, 10);
        }
    
    }
    
    package com.loaderman.bean;
    
    public class Person {
        private String name;
        private int age;
        public Person() {
            super();
    
        }
        public Person(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + age;
            result = prime * result + ((name == null) ? 0 : name.hashCode());
            return result;
        }
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (this.getClass() != obj.getClass())    //判断调用对象和传入对象的字节码文件是否是同一个字节码文件
                return false;
            Person other = (Person) obj;
            if (age != other.age)
                return false;
            if (name == null) {
                if (other.name != null)
                    return false;
            } else if (!name.equals(other.name))
                return false;
            return true;
        }
        @Override
        public String toString() {
            return "Person [name=" + name + ", age=" + age + "]";
        }
    
        public void eat() {
            System.out.println("今天吃了一顿金钱豹");
        }
    
        public void eat(int num) {
            System.out.println("今天吃了" + num + "顿金钱豹");
        }
    }
    
  • 相关阅读:
    Redis篇
    MySql篇
    Tomcat篇
    JDK篇
    冒泡排序(算法源码)
    堆排序(源码)
    快速排序(递归及非递归算法源码)
    MongoDB 复制
    MongoDB appendix
    服务器端脚本
  • 原文地址:https://www.cnblogs.com/loaderman/p/6411279.html
Copyright © 2011-2022 走看看