import static com.example.hello.Tools.*;
public class MAINCLASS{
public void run(){
runtools(); // this works
}
private class People{
public void runpeople(){
runtools(); // this does not work.
}
}
}
内部工具......
编辑:当我在People.runpeople()中滚动runtools()时......我明白了:
方法runtools()未定义类型MAINCLASS.People
public class Tools {
public void runtools() {
....
}
}
有谁知道为什么?
答案 0 :(得分:7)
您需要声明Tools#runtools()
static
才能import static
。
public class Tools {
public static void runtools() {
// ...
}
}
要么是,要么实例化Tools
,然后在其上调用runtools()
。
new Tools().runtools();
答案 1 :(得分:1)
在提及您最近询问的与此同一课程有关的另一个问题及其问题时:Why can't I put my functions in another class?
采取cletus建议从导入调用中删除'static'是否也解决了这个问题? “静态”位仍在那里。
答案 2 :(得分:1)
对runtools()
的调用不应该适用于这两种情况,因为runtools不是静态方法 - 它需要调用Tools
对象的实例。
答案 3 :(得分:1)
当您发布它时,该代码不应该(根本没有),因为您只导入Tools的静态成员,而runtools()是一个实例方法。如果你要使runtools()静态,那么两个runtools()的调用都应该有效,因为它在两种情况下都在范围内。
答案 4 :(得分:1)
这不编译。您无法使用static关键字导入包。导入需要是一种特定的方法。
所以你需要写这样的东西来编译,然后工作:
import static com.example.hello.Tools.someMethod;
此外,您导入的方法必须是静态的。
这使您可以调用静态方法,就像在此类的范围内声明的那样:
someMethod();