在Java中将方法移动到另一个类
我有两个类:ID3和Node,如下所示:在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
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为什么移动该方法是合适的,但不移动它所依赖的变量?我想你要么两个都动,要么两个都不动。但我真的没有足够的背景来自信地说。