2017-05-29 9 views
1

私は何か正しくやっていない、または私が持っているべきものが見えなかった場合は、事前に謝ります。処理では使用できない静的メソッドはありますか?

私はJavaでプログラミングを始めました。現在は、より使いやすくわかりやすいJavaのバージョンであるProcessingというコアを使っています。クラスで静的メソッドを定義しようとしていますが(Javaで許可されています)、このメソッドは静的宣言できません。静的メソッドはstaticまたはtop level型でのみ宣言できます。次のような問題を示すために簡略化され

私のコードは、次のとおりです。

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

非作るために実行するか、コンパイル、そして私の知る限り、唯一の回避策は次のようになりません。 -staticを呼び出し、特定のオブジェクトに対して呼び出します。

私はそれを静的メソッドのように定義できる方法はありますか?

この問題のお手伝いをお寄せいただきありがとうございます。

答えて

3

これは、Processingのすべてのクラスがメインスケッチクラスの内部クラスであるためです。内部クラスの内部に静的クラスを持つことはできません。詳細は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); 
    } 
} 
関連する問題