【问题标题】:Java main class instance accessJava主类实例访问
【发布时间】:2014-01-09 04:47:13
【问题描述】:

我无法编译以下代码。无法理解这里的编译过程。为什么主类实例对其他类不可见(test1)。为什么它在编译时失败。请帮忙。

public class test {
    public int i = 10;
    public static void main(String[] args) {
           System.out.println("test main");
    }
}
class test1 {
     test t = new test();
     System.out.println(t.i);
 }

【问题讨论】:

  • 你的错误信息是什么?
  • 你有多少个文件?它们各自的具体内容是什么?
  • 这里是错误 test.java:9: error: expected System.out.println(t.i); ^ test.java:9: 错误: 预期 System.out.println(t.i); ^ 2 个错误
  • @sp00m 只有 1 类。一个普通的 java 文件。

标签: java class compilation java-7 main


【解决方案1】:

System.out.println(t.i); 语句应该在块或方法中。

例如,您可以任一将其放置在块中(静态或非静态,没关系)。

public class test1 {
    test t = new test();

    static { //static can be omitted
        System.out.println(t.i);
    }
}

或者地方在方法中

public class test1 {
    test t = new test();

    public static void printSomething() { //static can be omitted
        System.out.println(t.i);
    }
}

更多信息(感谢@vidudaya):

【讨论】:

  • 我想知道这有什么问题。将它放在静态块中工作(编译)吗?
  • 要么把它放在一个块中(静态或非静态,没关系),要么放在一个方法中。
  • 检查this
  • 感谢科科。我想了解的是它背后的基本原理。
【解决方案2】:
System.out.println(t.i); 

必须在某个方法内。

public class Test {
    public int i = 10;
    public static void main(String[] args) {
        System.out.println("test main");
    }
}


class Test1 {

    Test t = new Test();

    public void printI(){
        System.out.println(t.i);
    }

}

还要遵守 java 命名约定。类名必须以大写字母开头。变量和方法必须是驼峰式。

【讨论】:

    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多