Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将方法移动到另一个类_Java_Class - Fatal编程技术网

在Java中将方法移动到另一个类

在Java中将方法移动到另一个类,java,class,Java,Class,我有两个类:ID3和Node,如下所示: 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

我有两个类:ID3和Node,如下所示:

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中删除并放到Node类中)。如何解决这个问题?

您可以在ID3类中创建一个静态变量,并在节点中调用它。在ID3中创建一个静态变量,如下所示:

public static noOfEx;
然后在ID3类中设置它(如果适用)。要从节点调用它,只需执行以下操作

int noOfEx = ID3.noOfEx;

您需要将共享数据移动到新类中。创建此类的单个实例,并将其传递给您创建的
节点
ID3
的每个实例

为了使这个过程更简单,我建议为节点和ID创建一个。工厂知道所有的构件以及如何组装它们


别忘了:

您正在创建一个新变量,我不认为这会是一个问题。您还没有给出一个完整的接口,您可以使用
接口
并将sTree方法放入其中。。在需要此方法的类上实现此接口。从您显示的代码来看,
noOfEx
是一个局部变量,那么它以何种方式是ID3类的一部分呢?我犯了一个错误,请参见edit为什么移动该方法是合适的,但不移动它所依赖的变量?我想你要么两个都动,要么两个都不动。但我真的没有足够的背景来自信地说。