2

私は暇なときにJavaの開発者であり、違いは何だろうと思っていました。

level.tick()

Level.tick(level)

(「レベル」はクラスの名前であり、「レベル」はそのクラスのオブジェクトです)

Javaはオブジェクトを参照することで機能するため、レベルをパラメーターとして渡すクラスから静的関数を呼び出すと、「level.tick()」と同じ効果が確実に得られることを私は知っています。

(これは私が取り組んでいるプロジェクトではないことに注意してください、私はただ尋ねると思っていました))

4

3 に答える 3

1

最初のメソッドは、引数を受け入れないLevelクラスの非静的関数を呼び出します。2番目のメソッドは、Level型の引数を期待しているLevelクラスの静的関数を呼び出します。

于 2013-01-10T07:57:13.753 に答える
1

どちらも同じ機能を実装できます。最も一般的には、ファーストインスタンスメソッド宣言を使用します。ただし、レベルがである可能性がある場合nullは、その呼び出しの前にチェックを追加する必要があります。2番目の静的メソッド宣言には、このチェックを含めることができ、作成する必要のある定型文を減らすことができます。

public class Level {
  public void tick();
  public static void tick(Level level);
}

level.tick(); // Safe to call if level can't be null
Level.tick(level); // Safe to call in any case

変数値が決してまたは例外的な場合にのみ発生するようにアプリケーションを設計するnullことで、多くの頭痛の種からあなたを救うことができます。

于 2013-01-10T08:08:59.573 に答える
0

私が正しく理解していれば、

Javaはオブジェクトを参照することで機能するため、レベルをパラメーターとして渡すクラスから静的関数を呼び出すと、「level.tick()」と同じ効果が確実に得られることを私は知っています。

Level.tick(level) 

自動的に翻訳されません

level.tick()

これは、ボディとして2番目のフォームを持つ静的関数がある場合にのみ機能します。

于 2013-01-10T08:04:07.803 に答える