- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习反射(reflection),我在回答这个问题时,为什么它没有异常??
public class FieldExceptionTest {
private boolean b = true;
public static void main(String[] args) throws Exception{
FieldExceptionTest ft = new FieldExceptionTest();
Class<?> c = ft.getClass();
Field f = c.getDeclaredField("b");
// f.setAccessible(true); //if i don't write this line, it also can run.
f.setBoolean(ft, Boolean.FALSE);
System.out.println(ft.b);
}
}
为什么它没有抛出 IllegalAccessException?通过阅读其他书籍,我知道如果尝试获取或设置私有(private)或其他不可访问字段的值或设置最终字段的值,则可能会抛出 IllegalAccessException。但在这里,它没有,为什么?
最佳答案
当访问“可访问对象”(方法、构造函数、字段等)时,会发生针对反射的访问检查。在这种情况下,您的字段是从一个允许访问它的类写入的,所以它可以工作。
(顺便说一句:这与 Java 7 方法句柄明显不同,在 Java 7 中,访问检查发生在创建方法句柄时,而不是在使用时。您可以使用方法句柄来授予对您拥有的方法的额外访问权限访问,通过将其传递给通常没有此类访问权限的其他代码。)
关于java - 为什么在使用反射时没有 illegalAccessException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18927965/
我正在尝试学习反射(reflection),我在回答这个问题时,为什么它没有异常?? public class FieldExceptionTest { private boolean b =
我知道我不应该使用这种方法,但出于测试目的我是。我创建了一个扩展 LinearLayout 并实现 Serializable 的类,以便能够将整个布局保存到一个文件中。 向此布局添加 View 后,我
我得到 android.widget.ImageView;尝试反序列化我之前序列化的对象时出现 IllegalAccessException File presetFile = new
假设您有一个名为 Timer 的类。当用户尝试调用方法 Timer#start() 时,代码会检查计时器是否已启动。如果有,则无法再次启动。现在,假设这个类是库/API 的一部分。开发人员无法知道该方
我正在尝试在 Java 中使用反射,但出现了一个奇怪的错误。当我收到以下错误时可能会出现什么问题: java.lang.IllegalAccessException: Class com.myapp.
我在尝试学习反射时遇到了这个 IllegalAccessException。请看下面的代码: public class ReflectionTest { public static voi
我有一个服务,它接收一个音频文件并用MediaPlayer 播放它。这就是我调用 Service 的方式: private void playAudio(String url) throws Exce
我需要使用 ant 运行 java 类。但是当我运行一个类文件时,它会抛出 IllegalAccessException。 这是我的 Ant 代码: 我在运行这个目标脚本时遇到
我遇到了一个非常奇怪的问题和一个奇怪的解决方案: class Parent { protected void aProtectedMethod() { doSomething(); } } c
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
考虑这对 Throwable: IllegalAccessExceptionextends Exception Thrown when an application tries to reflecti
尝试使用 WorkManager 1.0 稳定版入队时,我得到了 IllegalAccessException。这是堆栈跟踪: E/WM-WorkerFactory: Could not instan
给出下面的代码示例,为什么 accessUsingReflection -> theAnswer.get( outer ) 抛出 IllegalAccessException 而 accessDire
我有一个由以下代码调用的对话框窗口(DialogController 是使用模态对话框窗口的帮助器类;它主要将 Controller 引用与其窗口捆绑在一起): void handleServices
我的目标是: 第三个类将从控制台读取类名作为字符串。在读取类名后,它将自动动态(!)生成该类并调用其 writeout 方法。如果未从输入中读取该类,则不会对其进行初始化。 我正在处理 java.la
我在 firebase 项目控制台中为调试和发布 keystore 添加了 SHA1。我还通过应用程序中的 google-services.json 文件进行了更新。调试 apk 工作正常并访问 fi
我正在使用 Guice servlet 模块并试图让基本过滤器和监听器运行。当我启动我的 servlet 容器时,我得到一个包装在 AssertionError 中的 java.lang.Illega
我是网络开发新手,我正在 App Engine 上尝试 Thymeleaf 模板引擎。到目前为止,它工作得很好,除了当我尝试方法(而不是简单的属性)访问时,我总是得到 java IllegalAcce
我遇到了涉及 jar clash between incompatible versions of BouncyCastle 的问题. 我们通过创建一个 bean 来解决这个问题,该 bean 使用
我正在尝试创建定义自定义应用程序类,如下所示: 创建一个空子类名为 MyApp 的应用程序 在 list 中指定android::我的应用程序的名称:
我是一名优秀的程序员,十分优秀!