当前位置: 首页 > 知识库问答 >
问题:

Java反射-setAccessible的影响(true)

吕飞翼
2023-03-14

共有1个答案

王飞英
2023-03-14

使用setaccessible()可以更改AccessibleObject的行为,即字段实例,但不更改类的实际字段。以下是文档(摘录):

true值指示反射对象在使用时应该禁止对Java语言访问控制进行检查

和一个可运行的示例

public class FieldAccessible {
    public static class MyClass {
        private String theField;
    }

    public static void main(String[] args) throws Exception {
        MyClass myClass = new MyClass();
        Field field1 = myClass.getClass().getDeclaredField("theField");
        field1.setAccessible(true);
        System.out.println(field1.get(myClass)); // no exception
        Field field2 = myClass.getClass().getDeclaredField("theField");
        System.out.println(field2.get(myClass)); // IllegalAccessException
    }

}
 类似资料:
  • 问题内容: 我正在使用一些注释来动态设置类中字段的值。由于我想执行此操作,而不管它是公共的,受保护的还是私有的,因此每次调用该方法之前,我都会在Field对象上进行调用。我的问题是,电话会议对该领域本身会产生什么样的影响? 更具体地说,假设它是一个私有字段,并且这组代码调用。如果代码中的其他位置要通过反射来检索相同的字段,那么该字段是否已经可以访问?还是和方法每次都返回Field对象的新实例? 我

  • 本小节我们来学习一个 Java 语言中较为深入的概念 —— 反射(reflection),很多小伙伴即便参与了工作,可能也极少用到 Java 反射机制,但是如果你想要开发一个 web 框架,反射是不可或缺的知识点。本小节我们将了解到 什么是反射,反射的使用场景,不得不提的 Class 类,如何通过反射访问类内部的字段、方法以及构造方法等知识点。 1. 什么是反射 Java 的反射(reflecti

  • 问题内容: 是否有与.NET Reflector等效的Java ? 编辑:更具体地说,反编译是我的追求。 问题答案: 我几乎不知道.NET Reflector的功能在包括Eclipse在内的几乎所有Java IDE中都可用。只需将文件添加到项目中,就可以像浏览自己的类一样浏览其类。 对于反编译器方面(与纯类浏览器相反),还有一些替代方法。JDK工具仅反编译为字节码,因此获取源代码并没有什么用(但是

  • 问题内容: 我试图使用反射从另一个类中获取方法,但是由于某种原因,它一直在给我提供这样的方法异常。这些是即时通讯使用的类: ScriptTable类: DummyScript类 问题答案: 这是你的问题: 更改为: 并查看此处以了解原因: http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getMethod%28java.l

  • 问题内容: 我有这个JavaWeb应用程序,它可以从电子表格上传成千上万的数据,该电子表格是从上到下按行读取的。我用来在服务器端显示应用程序当前正在读取的行。 -我知道要创建一个日志文件。实际上,我正在创建一个日志文件,同时在服务器提示符下显示日志。 还有其他方法可以在提示上打印当前数据? 问题答案: 它可能会影响您的应用程序性能。大小会因您所运行的硬件类型和主机上的负载而异。 可以将其转化为性能

  • 问题内容: JSR-133常见问题解答说: 但是同步不仅仅是相互排斥。同步确保以可预见的方式使线程在同步块之前或期间对内存的写入对于在同一监视器上同步的其他线程可见。退出同步块后,我们释放监视器,其作用是将缓存刷新到主内存,以便该线程进行的写入对于其他线程可见。在进入同步块之前,我们需要获取监视器,该监视器具有使本地处理器缓存无效的作用,以便可以从主内存中重新加载变量。然后,我们将能够看到以前版本