首页 > 其他分享 >反射3 - 创建对象、调用方法

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

时间:2023-01-05 15:36:54浏览次数:42  
标签:反射 调用 String 创建对象 编译 Employee class

反射 - 练习

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

  • 反射机制的缺点也是显而易见的:对性能有影响。使用反射基本上是一种解释操作,我们可以告诉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;
        }
    }

}

标签:反射,调用,String,创建对象,编译,Employee,class
From: https://www.cnblogs.com/Ashen-/p/17027708.html

相关文章

  • 反射2 - 类加载器
    类加载器Java的类主要分为3种Java核心类库:String,Object...JVM软件平台开发商自己声明定义的类:User,Child...相应的类加载器也有3种--Java17BootClassLoade......
  • 反射1 - 基础
    反射对象获取自身的类对象再通过类对象获取类中的属性、方法、权限等publicclass_Reflect{publicstaticvoidmain(String[]args)throwsNoSuchFieldExcepti......
  • c#的构造函数及构造函数的调用
    C#构造函数的特性一、什么是C#构造函数?Construct,Function   C#构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化.   C#构造......
  • unity调用windows取色器实现换色和保存颜色
    需求如下:要打包后的exe文件可以实现给地板换颜色,而且必须用取色器来选颜色,当下次打开的时候颜色还要保留成上次选择后的颜色。思路:unity自带的取色器只能在编辑状态用,打包......
  • C#调用http请求,HttpWebRequest添加http请求头信息
    usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Linq;usingSystem.Net;usingSystem.Text;usingSystem.Threading.Tasks;namesp......
  • Python 调用Zoomeye搜索接口
    钟馗之眼是一个强大的搜索引擎,不同于百度谷歌,它主要收集网络中的主机,服务等信息,国内互联网安全厂商知道创宇开放了他们的海量数据库,对之前沉淀的数据进行了整合、整理,打造了......
  • ChatGPT 使用 API 进行 Postman 调用测试
    当获得ChatGPT的APIKey以后,想使用Postman来进行一下调用。调用的方法为POST。需要设置几个参数。我们希望使用的EndPoint是:APIEndPoint访问使用的EndPoin......
  • Java反射机制详解
     时间:2022/11/03 一.引出在学习反射的时候,大家可能会纠结反射技术有什么作用,下面我们通过这里需求来说明反射是如何解决现有技术不能解决的问题的:根据配置文件re......
  • python脚本调用CANoe COM Server接口
    《CANoe开发入门到精通》源码:#-----------------------------------------------------------------------------#Example:TestFeatureSetviaPython##This......
  • Java反射--2
    Java反射--1-忙碌了一整天的L师傅-博客园(cnblogs.com)一些实用的方法:Class类:newInstance():根据某个Class对象产生其对应类的实例,它调用的是此类的默认构造方法(......