从不同的JAVA包调用方法
我有两个包裹;pack1和pack2。 在pack1中,我有两个类,一个是Prog,另一个是ClassA。 在pack2中,我有一个类叫做ClassB 我试图理解为什么不能使用对象从ClassB调用方法。 我可以使用主类,但不能使用另一个类 代码如下:从不同的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
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章。