IT干货网

反射之实例化

leader 2022年03月12日 编程设计 184 0

反射之实例化

基本操作

以下代码使用反射机制来实例化:

package com.javalearn.reflect.realize; 
 
public class TestForRealize { 
    public static void main(String[] args) { 
        Class c = null; 
        try { 
            c = Class.forName("com.javalearn.reflect.realize.User");  // 获取字节码文件 
            Object obj = c.newInstance();  //实例化,只能调用无参构造方法 
        } catch (ClassNotFoundException e) { 
            e.printStackTrace(); 
        } catch (InstantiationException e) { 
            e.printStackTrace(); 
        } catch (IllegalAccessException e) { 
            e.printStackTrace(); 
        } 
 
    } 
} 
 
class User { 
    public User() {  // 如果添加了带参数的构造方法,无参构造会消失,应该再方法重载一次 
        System.out.println("我实例化了"); 
    } 
} 

输出结果:

我实例化了 

应用

以下代码使用反射机制通过读属性文件来实例化:

package com.javalearn.reflect.realize; 
 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.util.Properties; 
 
public class TestForRealize2 { 
    public static void main(String[] args) throws Exception { 
        FileReader reader = new FileReader("file1.properties");  // 文件内容为className=com.javalearn.reflect.realize.User 
        Properties p = new Properties(); 
        p.load(reader);  // properties使用load方法读取.properties配置文件 
        reader.close();  // 读完要关闭 
        String className = p.getProperty("className"); 
        System.out.println(className); 
        Class c = Class.forName(className);  // 反射机制 
        Object o = c.newInstance(); 
    } 
} 
 

输出结果:

com.javalearn.reflect.realize.User 
我实例化了 

评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!