从不同的JAVA包调用方法

从不同的JAVA包调用方法,java,packages,Java,Packages,我有两个包裹;pack1和pack2。 在pack1中,我有两个类,一个是Prog,另一个是ClassA。 在pack2中,我有一个类叫做ClassB 我试图理解为什么不能使用对象从ClassB调用方法。 我可以使用主类,但不能使用另一个类 代码如下: package pack1; import pack2.ClassB; public class Prog { public static void main(String[] args){ } } ClassA的代码 pa

我有两个包裹;pack1和pack2。 在pack1中,我有两个类,一个是Prog,另一个是ClassA。 在pack2中,我有一个类叫做ClassB

我试图理解为什么不能使用对象从ClassB调用方法。 我可以使用主类,但不能使用另一个类

代码如下:

package pack1;
import pack2.ClassB;

public class Prog {
    public static void main(String[] args){

    }
}
ClassA的代码

package pack1;
import pack2.ClassB;

public class ClassA {
    ClassB o3 = new ClassB();
    // Error won't compile
    System.out.println(o3.getText());

}
B类代码:

package pack2;

public class ClassB {
    final String TEXT = "This is a text";

    public String getText(){
        return TEXT;
    }
}

这里的问题不是你不能访问这个方法。问题是语句必须包含在构造函数、amethod声明或初始值设定项块中。因此,这将是有效的代码,例如:

enter codepackage pack1;
import pack2.ClassB;

public class ClassA {
    ClassB o3 = new ClassB();

    public void someMethod(){
        System.out.println(o3.getText());
    }
}

谢谢你的回复。但为什么会这样呢?在main类中,我不必将它括在构造函数中。@reddit_10 main类包含一个方法声明,您的
ClassA
版本包含一个语句(更准确地说是一个StatementExpression),它不同于方法声明。查看JLS()——本例中的第8.2章和第14.5章。