2014-01-06 40 views
-1

好吧,让我们说我有一个类游戏的对象。我将游戏实例化为游戏。现在游戏包含一个对象,startupState。如何从startupState更改游戏中的int值?如何访问对象的字段从它包含

很抱歉,如果我措辞不当这...代码示例:

public class game{ 
    int state; 
    StartupState startupState; 
    public static void main(String[] args){ 
     Game game = new Game(); 
    } 
    public Game(){ 
     state = 0; 
     startupState = new StartupState(); 
    } 
} 
这个代码,我将如何改变状态从startupState对象

所以呢?

+1

您是否了解过有关字段访问表达式和变体/访问器?不要回答这个问题,去查看它。 –

+0

是“游戏”应该是“游戏”?另外,尝试一个setter。 –

+1

您无法从'StartupState'中更改'Game'的实例。你的依赖是另一种方式:'游戏'知道'StartupState',但'StartupState'不知道'Game'。 –

回答

1

不能从StartupState改变Game对象。后者是一个单独的类的实例,可能没有Game的实例存在。但是,您可以反过来,并从game更改startupState(除非它声明为final)。要更改state,您需要一个setter(从当前包之外访问它),或者您需要声明它public。然后,你可以做

game.setState() // with setter 

game.state = some_int // if it's public 
+0

哦,真不错,我只会把它公开 – user2155333

+0

,如果你发现,是一个小问题。正如我提到的 - 而Jeroen评论说 - 你不能从'StartupState'中改变'Game'的一个实例。 –

0

我希望我正确解释这个问题。所以我认为的StartupState的实例有一个initialState成员变量,可能与它返回它public int getInitialState() {...}实例方法。在这种情况下......世界上没有真正的直接的方式到Game实例的state成员变量从StartupState类(你想在这里做什么,我假定这就是)改变。要做到这一点,你必须从Game类的实例方法调用getInitialState()并设置this.stategetInitialState()调用的返回值。

相关问题