zoukankan      html  css  js  c++  java
  • 通过反射获取class文件中的构造方法,运行构造方法

    /*
     *  通过反射获取class文件中的构造方法,运行构造方法
     *  运行构造方法,创建对象
     *    1、获取class文件对象
     *    2、从class文件对象中,获取需要的成员
     *    
     *  Constructor 描述构造方法对象类
     */

    1、person类,用于测试获取无参的构造方法

    package cn.itcast.demo1;
    
    public class Person {
        public String name;
        private int age;
    
        
        /*static{
            System.out.println("静态代码块");
        }*/
        
        public Person(){
        }
        
        public Person(String name,int age){
            this.name = name;
            this.age = age;
        }
        
        private Person(int age,String name){
            this.name = name;
            this.age = age;
        }
        
        public void eat(){
            System.out.println("人吃饭");
        }
    
        public void sleep(String s, int a,double d){
            System.out.println("人在睡觉"+s+"....."+a+"....."+d);
        }
        private void playGame(){
            System.out.println("人在打游戏");
        }
    
        public String toString() {
            return "Person [name=" + name + ", 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;
        }
        
    }

    2、获取无参构造方法测试类

    public class ReflectDemo1 {
        public static void main(String[] args) throws Exception {
        
            Class c = Class.forName("cn.itcast.demo1.Person");
            //使用class文件对象,获取类中的构造方法
            //  Constructor[]  getConstructors() 获取class文件对象中的所有公共的构造方法像person类中构造方法用private修饰的是获取不到的
            /*Constructor[] cons = c.getConstructors(); //获取到的是多个构造方法
            for(Constructor con : cons){
                System.out.println(con);
            }*/
            //获取指定的构造方法,空参数的构造方法
            Constructor con =  c.getConstructor();//获取指定的构造方法
            //运行空参数构造方法,Constructor类方法 newInstance()运行获取到的构造方法
            Object obj = con.newInstance();
            System.out.println(obj.toString());
        }
    }
  • 相关阅读:
    Abstract与Virtual
    List 常用方法
    控制数据采样分布 计算概念
    中期答辩感想
    软件开发之团队理解
    详细设计理解
    竞赛系统需求分析
    软件代码规范之理解
    AngularJS 整理资料
    AngularJS合集
  • 原文地址:https://www.cnblogs.com/a8457013/p/8134034.html
Copyright © 2011-2022 走看看