Issue:error: class Node is public, should be declared in a file named Node.java

Analysis and Debug

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

在JAVA程序中,一个源文件里能定义多个class,但是有且只能有一个public类。

非public类的名字只要符合java标识符规则就可以,public类的名字必须和源文件名一致。JVM读取的是编译后的.class文件而不是.java源文件,而定义在一个源文件中的多个类编译后都生成了由各自类名命名的.class文件。

2. 如何解决这个问题?

既然JAVA源文件中只能定义一个public类,那么我们可以把其他的类定义成non-public类

出现这个问题的源码:

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

public class Node {              <<<<<<这里,class Node不能定义成public
    private String name;
    private int start;
    private int end;
    private LinkedList<String> data;

    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 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();

    }
}

results matching ""

    No results matching ""