通過反射創建對象和調用方法


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);
    }
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM