2017-05-29 37 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); 
    } 
} 
相關問題