反射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;
}
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)