zoukankan      html  css  js  c++  java
  • 通过反射创建对象和调用方法

    1、反射创建对象,该对象有一个无参的构造方法

    //reflect.User表示User类的全路径
    User user = (User) Class.forName("reflect.User").newInstance();   

    2、反射创建对象,该对象有 有参的构造方法

    //getConstructor(String.class,String.class)表示该构造方法有两个参数,参数类型为String
    //newInstance("张三","20") :给参数赋值

    User user1=(User) Class.forName("reflect.User").getConstructor(String.class,String.class).newInstance("张三","20");

    3、反射方法:先得到对象,通过对象反射方法

    Method method = user.getClass().getMethod("sayHello", String.class); //“sayHello方法名”
    method.invoke(user, "张三");  //给方法参数赋值

    全部代码

    package reflect;
    
    import java.lang.reflect.Method;
    
    public class demo1 {
        public static void main(String[] args) {
            try {
                User user = (User) Class.forName("reflect.User").newInstance();
                User user1=(User) Class.forName("reflect.User").getConstructor(String.class,String.class).newInstance("张三","20");
                System.out.println(user);
                System.out.println(user1);
                //通过对象反射方法
                Method method = user.getClass().getMethod("sayHello", String.class);
                method.invoke(user, "张三");
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    class User{
        private String name;
        private String age;
        public User(){}
        public User(String name,String age) {
            this.name = name;
            this.age = age;
        }
        @Override
        public String toString() {
            return "User [name=" + name + ", age=" + age + "]";
        }
        
        public void sayHello(String name) {
            System.out.println("Hello "+name);
        }
        
    }
  • 相关阅读:
    引用传递函数值
    关于引用(python中的伪指针)的理解
    学生管理系统_排序后通过name删除列表里的字典
    学生管理系统(函数版)
    全局变量和局部变量的理解
    lambda隐藏函数的嵌套
    lambda函数常见用法
    函数的多个返回值
    函数的函数名重名
    函数的嵌套
  • 原文地址:https://www.cnblogs.com/dongtian-blogs/p/10802969.html
Copyright © 2011-2022 走看看