如果我没有正确地做某事,或者如果我没有看到我应该拥有的东西,我会事先道歉。
我开始使用Java编程,目前正在使用Processing,这是一个更加用户友好且易于理解的Java版本。我试图在类上定义静态方法(由Java允许),但它给出了错误“方法不能声明为静态;静态方法只能在静态或顶级类型中声明。”
我的代码,简化为演示问题,如下:
class Item {
static void test() {
print("Hello");
}
}
它不会运行或编译,据我所知,唯一的解决方法是将其设置为非静态并在特定对象上调用它。
有没有办法可以定义它,以便我可以保持静态方法?
提前感谢您对此问题的任何帮助。
答案 0 :(得分:3)
这是因为Processing中的所有类都是主草图类的内部类。你不能在内部类中拥有静态类。有关详细信息,请参阅here。
要解决此问题,您可以创建一个新的Item.java
标签,该标签会创建一个单独的顶级课程。但是,您必须传递sketch实例以使用该类中的任何Processing函数。是否值得获得使用静态的能力取决于你。
我会说在Processing草图中使用类中的静态函数没有多大意义。你为什么不只使用草图级函数?
答案 1 :(得分:0)
只是好奇,我找到了一种使用静态功能的方法。但在现实生活中没用。
static PApplet p5;
Cat c=new Cat();
void setup(){
p5=this;
Cat.say(); //static function
c.display(); //no-static function
}
static class Cat{
static void say(){
println("hello");
}
void display(){
p5.ellipse(20,20,50,50);
}
}