2017-05-29 31 views
1

我提前道歉,如果我没有做正确的东西,或者如果我没有看到的东西,我应该有。处理中不允许的静态方法?

我开始用Java编程和现在使用的处理,这是一种更人性化和更容易理解的Java版本,其核心。我试图在一个类上定义一个静态方法(被Java允许),但它给了我错误:“该方法不能被声明为静态;静态方法只能在静态或顶级类型中声明”。

我的代码,简化为说明问题,如下:

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

它将无法运行或编译,就我所看到的,唯一的解决方法是使其成为非静态并在特定对象上调用它。

有没有办法,我可以定义它,这样我可以保持它的静态方法的方法吗?

预先感谢这个问题的任何帮助。

回答

3

这是因为在处理所有的类都是你的主素描类的内部类。内部类中不能有静态类。有关更多信息,请参阅here

要解决这个问题,你可以创建一个新的Item.java标签,这将创建一个单独的顶级类。但是,您必须传入草图实例才能使用该类中的任何Processing函数。是否值得获得使用静态的能力取决于你。

我会说在处理草图中使用类内的静态函数没有多大意义。你为什么不使用草图级别的功能?

+0

啊,我明白了。我忘记了我可以在课外创建功能。谢谢你的帮助! –

+0

@DrewChristensen从技术上说,它在主草图类中,但Processing编辑器隐藏了它。 –

+0

啊,是的。技术性。 –

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); 
    } 
} 
相关问题