如何在列表字段上使用 field.get(obj)?

How do I use field.get(obj) on a List field?

我想从 class 获取一个私有列表字段,但我不知道要给 field.get 什么参数才能成功从 class 获取列表。我当前的代码生成 java.lang.IllegalArgumentException.

Field field = Minecraft.class.getDeclaredField("defaultResourcePacks");
field.setAccessible(true);

List<IResourcePack> changedList = new ArrayList<IResourcePack>();

List<IResourcePack> list = (List<IResourcePack>) field.get(changedList);

在你的例子中:

List<IResourcePack> changedList = new ArrayList<IResourcePack>();
List<IResourcePack> list = (List<IResourcePack>) field.get(changedList);

您使用 get() 的方式不对。预期参数必须是 class Minecraft 的对象; get 提取您之前确定的字段的内容。换句话说:你不需要输入参数"changedList";你需要一个 Minecraft 对象。

我认为你应该使用 get(objOfMinecraft)