gpt4 book ai didi

java - 如何启动具有子类的私有(private)值的类的对象

转载 作者:行者123 更新时间:2023-11-30 03:31:04 24 4
gpt4 key购买 nike

例如,我有这段代码。

public class BST{
private Node root;
private double[] start;

public class Node{
private double[] coords;
private String address;
private Node left, right;
private double distance;


public Node (double[] coords, String address){
this.coords = coords; this.address = address;
this.distance = distance(coords);
}
//calculates
public double distance(double[] destination){
double tempLat = start[1] - destination[1];
double tempLong = start[0] - destination[0];
tempLat = tempLat*111;
tempLong = tempLong*85;
double Distance = Math.sqrt(Math.pow(tempLong, 2)+Math.pow(tempLat,2));
return Distance;
}

}

public BST(Node root, double[] start){
this.root = root;
this.start = start;
}

它是一棵树,有一个子类节点。

我的问题是,在 Main 类中,我无法正确初始化 BST 对象。

我这样做:

BST mcdonaldsLocations;
Node rootM = new Node(rootCoords, rootAddress);
mcdonaldsLocations = new BST(rootM, start);

而且它不起作用。所以我做了一些修改并得到了这个

BST mcdonaldsLocations = null;
Node rootM = mcdonaldsLocations.new Node(rootMCoords, rootMAddress);
mcdonaldsLocations = new BST(rootM, start);

可以编译,但有空指针错误。

最佳答案

我不会将 Node 实现为内部类,而是出于演示目的:您可以使用静态工厂 - 从代码中删除构造函数,然后执行以下操作:

public static BST generateBST(double[] start, String rootAddress) {
BST bst = new BST();
bst.start = start;
Node root = bst.new Node(start, rootAddress);
bst.root = root;
return bst;
}

关于java - 如何启动具有子类的私有(private)值的类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29023883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com