我一直在尝试开发一个《我的世界》模组,但遇到了一个障碍,我没有运气能够超越。在尝试解决此问题时,我筛选了多个其他问题和网站,但无济于事。
我得到的最接近的结果是在方法外部创建变量,然后在方法内部设置值。但是,这样做的问题是它总是返回 null。
另外,如果还不清楚的话,我说的是“taskEntriesMethod”变量。
这是我的代码:
public void getExecutingTaskEntries(Profiler profiler)
{
try
{
Class<?> AITasks = Class.forName("net.minecraft.entity.ai.EntityAITasks");
Field taskEntries = AITasks.getDeclaredField("executingTaskEntries");
taskEntries.setAccessible(true);
Object AITasksObj = taskEntries.get(new EntityAITasks(profiler));
Set<EntityAITasks.EntityAITaskEntry> taskEntriesMethod = (Set<EntityAITaskEntry>) AITasksObj;
}
catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException exception) { exception.printStackTrace(); }
}
private final Set<EntityAITasks.EntityAITaskEntry> executingTaskEntries = taskEntriesMethod; // <-- (this is what errors out)
最佳答案
您创建了一个 get
方法,但将其声明为 void。您可能想将代码更改为如下所示:
public Set<EntityAITasks.EntityAITaskEntry> getExecutingTaskEntries(Profiler profiler) {
//your code
return (Set<EntityAITaskEntry>) AITasksObj;
}
然后像这样使用它
Set<EntityAITasks.EntityAITaskEntry> executingTaskEntries = getExecutingTaskEntries(profiler)
关于java - 我如何从该方法外部访问该变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62189155/