如何在列表字段上使用 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)
我想从 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)