前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java的反射

java的反射

作者头像
名字是乱打的
发布2022-05-13 11:00:55
2160
发布2022-05-13 11:00:55
举报
文章被收录于专栏:软件工程

反射机制:Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。

反射实例证明反射的可行
代码语言:javascript
复制
package jvm;

public class ReflectEntry {
    private String name;
    private  int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "ReflectEntry{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
代码语言:javascript
复制
public class ReflectTest {
    public static void main(String[] args) throws Exception {
        Class<?> aClass = Class.forName("jvm.ReflectEntry");
        ReflectEntry re = (ReflectEntry) aClass.newInstance();
       // re.setAge(1);
        //re.setName("java");
        Method  declaredMethods = (Method) aClass.getDeclaredMethod("setName", String.class);
        declaredMethods.setAccessible(true);
        declaredMethods.getName();
        Object o = declaredMethods.invoke(re, "zyh");
        System.out.println(re.getName());
    }
}
反射技术的优缺点:
反射的优点
  • 反射提高了Java程序的灵活性和扩展性
  • 降低耦合性,提高自适应能力。
  • 它允许程序创建和控制任何类的对象,无需提前硬编码目标类;
反射的缺点:
  • 性能问题:反射包括了一些动态类型,所以JVM无法对这些代码进行优化。因此,反射操作的效率要比那些非反射操作低得多。我们应该避免在经常被 执行的代码或对性能要求很高的程序中使用反射。
  • 使用反射会模糊程序内部逻辑:程序人员希望在源代码中看到程序的逻辑,反射等绕过了源代码的技术,因而会带来维护问题。反射代码比相应的直接代码更复杂。
  • 内部暴露:由于反射允许代码执行一些在正常情况下不被允许的操作比如访问私有的属性和方法),所以使用反射可能会导致意料之外的副作用
类加载方式

隐式加载:new

显式加载:loadClass,forName等

反射.Class.forName和Classloder.loadClass得到的class的区别

见链接文末https://cloud.tencent.com/developer/article/2002308

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 反射实例证明反射的可行
  • 反射技术的优缺点:
    • 反射的优点
      • 反射的缺点:
      • 类加载方式
      • 反射.Class.forName和Classloder.loadClass得到的class的区别
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档