Issue: error: name has private access in Node . System.out.println(node.name);

Analysis and Debug

1.这个问题为什么出现?

当一个类中的成员变量或者方法是private的时候,另一个那么这个类中的成员变量或者方法在其他的类中是不可见的,所以要想其他的类可以访问这些成员变量或方法,需要把它们declare成public的

2. 如何解决这个问题?

把类中的成员变量declare成public的

出现这个问题的源码:



import java.util.List;
import java.util.LinkedList;
import java.util.ArrayList;

class Node {
    private String name;             <<<< change from private to public
          private int start;               <<<< change from private to public
    private int end;                 <<<< change from private to public
    private LinkedList<String> data; <<<< change from private to public

    public Node(String name){
        this.name = name;
        data = new LinkedList<String>();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getStart() {
        return start;
    }

    public void setStart(int start) {
        this.start = start;
    }

    public int getEnd() {
        return end;
    }

    public void setEnd(int end) {
        this.end = end;
    }

    public LinkedList<String> getData() {
        return data;
    }

    public void setData(LinkedList<String> data) {
        this.data = data;
    }
}


public class ConsistentHashing {
    private int scope = 10000;
    private List<Node> nodes;

    public ConsistentHashing() {
        nodes = new ArrayList<Node>();
    }

    public int getScope(){
        return scope;
    }

    public void setScope(int scope) {
        this.scope = scope;
    }

    public void display() {
        System.out.println("Status:");
        for (Node node: nodes) {
            System.out.println(node.name);
        }
    }

    public void addNode(String nodeName) {
        if (nodeName == null) {
            throw new IllegalArgumentException("node name cannot be empty");
        }

        Node node = new Node(nodeName);
        if (nodes.size() == 0) {
            node.setStart(0);
            node.setEnd(scope);
            nodes.add(node);
        }
        else {

        }
    }

    public static void main (String[] args) {
        ConsistentHashing hash = new ConsistentHashing();
        hash.addNode("server1");    
        hash.display();
    }
}

results matching ""

    No results matching ""