2015-01-05 40 views
1

我有兩個類:ID3和節點,如下所示:移動方法到其他類中的Java

class Node { 
    public Vector kept; 
    public Node[] children; 
    public Node parent; 

    public Node() { 
     kept = new Vector(); 
    } 
} 

,並在其他類(ID3)我有一種方法:

public void sTree(Node node, int heuristic) { 
    int noOfIn = noOfAttributes - 1; 
} 

和我希望將sTree()方法移到其他類(Node),因爲它與樹有關。但是,變量noOfAttributes等是在ID3類(全局)中定義的,所以在Node類中找不到,如果我移動此方法(由於其他方法,我需要它們在ID3類中,因此我無法刪除它們從ID3並將它們放到節點類)。我怎麼解決這個問題?

+1

您正在創建一個新的變量我看不出這將是一個問題。你還沒有給出一個完整的[MCVE](http://stackoverflow.com/help/mcve) – StackFlowed

+0

你可以使用'interface'並將sTree方法放入其中。在需要此方法的類上實現此接口.. –

+0

從你所顯示的代碼中,noOfEx是一個局部變量,那麼它是以什麼方式成爲ID3類的一部分? – Eran

回答

0

你可以在你的ID3類中創建一個靜態變量並在Node中調用它。在ID3中創建一個靜態變量,如下所示:

public static noOfEx; 

然後在適用時將其設置在ID3類中。要從Node調用它,只需執行

int noOfEx = ID3.noOfEx; 
0

您需要將共享數據移動到新類中。創建此類的單個實例,並將其傳遞給您創建的每個實例NodeID3

爲了使這個過程更簡單,我建議爲節點和ID創建一個factory。工廠知道所有的積木,以及如何組裝它們。

不要忘記:Global variables are evil.

相關問題