反射3 - 创建对象、调用方法

反射 - 练习

  • 反射机制的优势很明显:它可以实现动态创建对象和编译,体现出语言很大的灵活性,这也是反射被广泛用于各种框架中的最主要原因。

  • 反射机制的缺点也是显而易见的:对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们的要求。这类操作总是慢于只直接执行相同的操作,同时在运行时动态编译也会比较消耗内存。

Java中为什么要用反射机制?直接创建对象不就可以了吗,这主要涉及到了动态与静态的问题。

  • 静态编译:在编译时确定类型,绑定对象,即通过。
  • 动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,用以降低类之间的耦合性。
public class ReflectTest {
    public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {

        //TODO reflect 练习 -- 员工登录功能
        //员工通过账号、密码进行登录,成功时返回true,失败则返回false

        //通过反射 得到类中有参构造方法的对象
        Class empClass = Employee.class;
        Constructor constructor = empClass.getConstructor(String.class, String.class);
        //无参构造方法 -- empClass.getDeclaredConstructor()


        //通过构造方法的对象 构建实例
        Employee a =(Employee) constructor.newInstance("a", "1");


        System.out.println(a.login("a", "1")); //true
        System.out.println(a.login("a", "2")); //false



    }
}

class Employee{
    private String account;
    private String password;
    

    public boolean login(String a,String p){
        if(a.equals(this.account) && p.equals(this.password)){
            return true;
        }else{
            return false;
        }
    }

}
posted @   LaViez  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示