相关疑难解决方法(0)

什么是非法反射访问

关于Java 9中的非法反射访问存在很多问题.

现在我找不到的是因为所有谷歌都在努力解决错误信息,实际上是非法的反射访问.

所以我的问题很简单:

什么定义非法反射访问以及什么情况触发警告?

我已经收集到它与Java 9中引入的封装原则有关,但它们如何挂在一起以及什么触发警告在什么情况下我找不到解释.

java java-9 java-module

82
推荐指数
4
解决办法
7万
查看次数

获取jdk12中java.lang.reflect.Fields的声明字段

在java8中,可以使用例如访问类java.lang.reflect.Fields的字段。

Field.class.getDeclaredFields();
Run Code Online (Sandbox Code Playgroud)

在java12中(从java9开始),这仅返回一个空数组。即使有

--add-opens java.base/java.lang.reflect=ALL-UNNAMED
Run Code Online (Sandbox Code Playgroud)

组。

任何想法如何实现这一目标?(Appart认为这可能不是一个好主意,我希望能够通过反射在junit测试期间更改代码中的“ static final”字段。Java8可以通过更改“修饰符”来实现。

Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(myfield, myfield.getModifiers() & ~Modifier.FINAL);
Run Code Online (Sandbox Code Playgroud)

java reflection unit-testing java-12

14
推荐指数
4
解决办法
1233
查看次数

如何停止线程 - Java

如果我有以下结构,有人可以告诉我如何停止线程?

我想停止线程到期线程后Ç.

在此输入图像描述

    c = new c();
    c.start();
    b = new b();
    b.start();

class c extends Thread {

    @Override
    public void run() {
      // DRAW IMAGE
      // b.stop(); - doenst work
    }
}

class b extends Thread {

    @Override
    public void run() {
      // PROGRESS BAR

    }
}
Run Code Online (Sandbox Code Playgroud)

java multithreading

1
推荐指数
1
解决办法
303
查看次数