我正在与一个非开源项目合作,我需要修改一个或多个其类。
在一个类中是以下集合:
private Map<Integer, TTP> ttp = new HashMap<>();
我需要做的就是在这里使用反射和并发hashmap。我试过下面的代码,但是不起作用。
Field f = ..getClass().getDeclaredField("ttp");
f.setAccessible(true);
f.set(null, new ConcurrentHashMap<>());
希望这是您要尝试做的事情:
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class Test {
private Map ttp = new HashMap();
public void test() {
Field declaredField = null;
try {
declaredField = Test.class.getDeclaredField("ttp");
boolean accessible = declaredField.isAccessible();
declaredField.setAccessible(true);
ConcurrentHashMap<Object, Object> concHashMap = new ConcurrentHashMap<Object, Object>();
concHashMap.put("key1", "value1");
declaredField.set(this, concHashMap);
Object value = ttp.get("key1");
System.out.println(value);
declaredField.setAccessible(accessible);
} catch (NoSuchFieldException
| SecurityException
| IllegalArgumentException
| IllegalAccessException e) {
e.printStackTrace();
}
}
public static void main(String... args) {
Test test = new Test();
test.test();
}
}
它打印:
value1
这是我得到的错误(在setMOTD的最后第二行):
问题内容: 我有2类:和 通过反思,我想在课堂上设置: 但我有一个例外: 线程“主”中的异常java.lang.NoSuchFieldException:a_field 但是,如果我尝试: 有用。 使用setter方法我有同样的问题: 问题答案: 要访问私有字段,您需要设置为true。您可以离开超类领域。此代码有效:
问题内容: 我有以下结构,并且需要某些字段为空,所以我使用指针,主要是处理sql空值 所以当我执行以下操作时,我可以看到json结果中的值类型可以为null 但是当我尝试使用反射完成所有操作时 我从反射部分得到的是以下错误 我究竟做错了什么? 这是一个GoPlay http://play.golang.org/p/0xt45uHoUn 问题答案: Reflection.Value.Set仅接受作为
问题内容: 基于使用Java反射更改私有静态最终字段,我尝试设置私有静态最终字段。 (我知道这非常骇人,但是这个问题与代码质量无关;与Java反射有关。) 此打印 我已经使用OpenJDK 6和7,以及Oracle 7进行了尝试。 我不知道Java反射可以提供什么保证。但是,如果失败了,我以为会有一个(实际上所有反射方法都会抛出异常)。 这是怎么回事 问题答案: Java内联字段可在编译时初始化为
问题内容: 我无法获取字段值。我想做的是在运行时获取对象。请让我知道我要去哪里了。 测试类 } EX.class } 问题答案: 像这样 或者,您可以使用类的方法在运行时获取对象的实例。您仍然需要首先设置该实例变量,否则它将没有任何值。 例如 或者,在其构造函数中有两个参数的地方,例如String和int … 或者您可以在运行时使用它为其构造函数查询 注意:我特意省略了将在此创建的对象强制转换为预
问题内容: 我试图以一种通用的方式比较两个不同对象的字段值。我有一个函数(如下所示),该函数接受两个Object,然后获取字段,然后在循环中比较这些字段,如果它们不相同,则将这些字段添加到列表中- 这是执行此操作的正确方法吗? 我在谷歌上搜索,发现C#就像一个PropertyInfo类- Java是否有类似的东西?另外,有没有办法做-我知道没有这样的方法,但也许还有另一种方法? 问题答案: 您可以