Processing中不允许使用静态方法?

时间:2017-05-29 22:29:30

标签: static processing

如果我没有正确地做某事,或者如果我没有看到我应该拥有的东西,我会事先道歉。

我开始使用Java编程,目前正在使用Processing,这是一个更加用户友好且易于理解的Java版本。我试图在类上定义静态方法(由Java允许),但它给出了错误“方法不能声明为静态;静态方法只能在静态或顶级类型中声明。”

我的代码,简化为演示问题,如下:

class Item {
  static void test() {
    print("Hello");
  }
}

它不会运行或编译,据我所知,唯一的解决方法是将其设置为非静态并在特定对象上调用它。

有没有办法可以定义它,以便我可以保持静态方法?

提前感谢您对此问题的任何帮助。

2 个答案:

答案 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);
     }
}