从另一个类读取“worldInfo”是否可行?
以下是持有它的类的一部分:
public abstract class World implements IBlockAccess{
protected WorldInfo worldInfo;
//=====Stuff=====
public World(ISaveHandler par1ISaveHandler, String par2Str, WorldSettings par3WorldSettings, WorldProvider par4WorldProvider, Profiler par5Profiler, ILogAgent par6ILogAgent)
{
this.worldInfo.setWorldName(par2Str);
}
}
我想在我的班级中使用它来获取名称。 “worldInfo.getWorldName”
编辑1: 好吧,我在World的同一个包中创建了一个类。“World_Spy.class”
public class World_Spy extends World{
public World_Spy(ISaveHandler par1iSaveHandler, String par2Str,
WorldProvider par3WorldProvider, WorldSettings par4WorldSettings,
Profiler par5Profiler, ILogAgent par6iLogAgent) {
super(par1iSaveHandler, par2Str, par3WorldProvider, par4WorldSettings,
par5Profiler, par6iLogAgent);
}
@Override
protected IChunkProvider createChunkProvider() {
return null;
}
@Override
public Entity getEntityByID(int i) {
return null;
}
String TheName = "";
public void gotIt(){
TheName = this.worldInfo.getWorldName();
System.out.println(TheName);
}
}
但是当我从主类叫它时它会崩溃游戏..
World_Spy WName = new World_Spy(null, null, null, null, null, null);
是关于参数吗?
答案 0 :(得分:0)
要访问worldInfo
,您必须延长World
,但由于worldName
设置为World
构造函数的第二个参数,这意味着您必须知道它在你的孩子班,所以..
答案 1 :(得分:0)
对于您想要的功能,可以将关键字protected更改为public,或者在类中创建公共函数。它看起来像这样:
public String getWorldName(){
this.worldInfo.getWorldName();
}
答案 2 :(得分:0)
该类为abstract
,因此无法启动。您可以从此类中读取static
变量,但不能创建此类的对象。你可以将这个变量作为static
,然后你读它或继承这个类并使它成为对象或使它成为非abstract
并使它成为对象。
这个变量保持不变?设为static
。
答案 3 :(得分:0)
实际上,protected表示它可以由子类使用,也可以由同一个包中的任何其他类使用。所以是的,你可以在同一个包中的所有类中使用它,即使它们不是子类化抽象类
答案 4 :(得分:0)
如果满足下列条件之一,则可以直接访问该字段:
World
(继承的受保护字段是
在派生类中可见,World
也不是最终的,并且具有非私有构造函数)在该字段上设置accessible property to true之后,也可以通过任何其他类的反射访问该字段(只要安全管理员允许)。