反射 - 练习
-
反射机制的优势很明显:它可以实现动态创建对象和编译,体现出语言很大的灵活性,这也是反射被广泛用于各种框架中的最主要原因。
-
反射机制的缺点也是显而易见的:对性能有影响。使用反射基本上是一种解释操作,我们可以告诉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