Java Help:为什么我不能访问当前main方法文件之外的类中声明的静态方法

时间:2015-02-08 21:35:10

标签: java sax

遵循SAX的JavaDocs教程: main方法无法识别方法usage()。据我所知,它应该是可访问的,因为方法被声明为静态并且与main方法存在于同一个包中。

public class Main {
    public static void main(String args[]){
        String filename = null;

//Checks to see if commnad line arguments are present
        for (int i = 0; i < args.length; i++) {
            filename = args[i];
            if (i != args.length - 1) {
                usage();
            }
        }

        if (filename == null) {
            usage();
        } 

//Defined in the same package as the main method
    public class SAXLocalNameCount extends DefaultHandler{
        private Hashtable tags;

        public void startDocument() throws SAXException{
            tags = new Hashtable();
        }

//The problem method    
    private static void usage() {
       System.err.println("Usage: SAXLocalNameCount <file.xml>");
       System.err.println("       -usage or -help = this message");
       System.exit(1);
    }
}

2 个答案:

答案 0 :(得分:2)

usage()似乎是SAXLocalNameCount类的成员,而不是Main类。尽管有缩进。

答案 1 :(得分:0)

现在定义的使用方法只能在SAXLocalNameCount类的另一个静态方法或静态代码块中使用。

你可以:

  1. 将静态main方法移动到SAXLocalNameCount类中,并移出Main类。
  2. 将使用方法的可见性更改为公开,并将其从Main类中使用 - &gt;静态主要方法。