"静的メソッドはインスタンスフィールドと通信できません。静的フィールドのみと通信することがあります。"私はこの引用された行を読まなければなりません。私がこのフォーラムで他のスレッドを勉強したとき、私は静的メソッドでインスタンスフィールドを使用できることを発見しました。だから、これは何を意味するのですか?本当ですか?Javaの静的メソッドとインスタンスフィールドの間の通信
答えて
静的メソッドで非静的(インスタンス)フィールドを使用することはできません。これは、静的メソッドがインスタンスに関連付けられていないためです。
static
のメソッドはクラスごとに1つですが、クラスは多くのインスタンスを持つことができます。したがって、2つのインスタンスがある場合、どのフィールドに静的メソッドが表示されますか?
のは、これが有効であることを想像してみましょう:
class Foo {
private int bar;
public static int getBar() {
return bar; // does not compile;
}
}
そして:
Foo foo1 = new Foo();
foo1.bar = 1;
Foo foo2 = new Foo();
foo2.bar = 2;
Foo.getBar(); // what would this return. 1 or 2?
良いexplination。 – kralco626
静的メソッドでインスタンスフィールドを使用することはできません。あなたはどのインスタンスを参照していますか?
ただし、静的メソッドにはインスタンスへの参照があり、そのインスタンスのフィールドを使用します。
public class Stock {
public double price = 0.0;
public static void setPriceIncorrectly() {
price = 0.0 // which price ?
}
public static void setPriceCorrectly() {
Stock s = new Stock();
s.price = 0.0 // which price ?
}
}
class MyClass{
int i ;
static String res;
public static void myMethod(){
i = 10 //not allowed because it is instance non static field
res = "hello" ; allowed , because it is static field
new MyClass().i = 10;//allowed as we are accessing it using an instance of that class
}
}
説明:staticフィールド/メソッド/ ..クラスでないのオブジェクトに関連付けられていますそのクラス。メンバ変数/メソッドは、クラスのオブジェクトに関連付けられているので、それらにアクセスするために、私たちはクラス
のオブジェクトが必要です。また、私たちは、インスタンス を使用できることがわかっ
しかし、 'new MyClass()。i = 10'という行は何をしますか?彼がどこかにオブジェクトを格納しない限り、彼は何も良いことはしません。 – kralco626
@ kralco626あなたの答えは –
だと思います。なぜ* downvote * ?? –
を参照してください。静的メソッドのフィールドとその逆。 versa
これは当てはまりません。静的メソッドは "インスタンス"に属していないため、静的メソッドのインスタンスフィールドを参照することはできません。
推奨読書:http://download.oracle.com/javase/tutorial/java/javaOO/classvars.html
あなたが存在していないものを使用することはできません。
静的なフィールドまたはメソッドがある場合は、インスタンスに関連付けられていません。非静的要素は存在しません。
インスタンスフィールドと通信するには、常にインスタンスが必要です。インスタンス(たとえば、パラメータや静的フィールド)にアクセスできる場合、そのメンバーにアクセスできます。しかし、クラスのインスタンスフィールドに直接アクセスすることはできません。
- 1. インスタンスフィールドで動作する静的メソッド
- 2. 静的メソッドと静的変数のjava
- 3. Javaの静的メソッド
- 4. Javaの静的メソッド
- 5. javaのsyncrhonized静的メソッド
- 6. Javaの名前静的メソッド
- 7. FlexとJavaの間の通信?
- 8. PHPとJavaの間の通信
- 9. Javaとアプレットの間の通信
- 10. rubyとjavaの間の通信
- 11. GroovyとJavaプログラム間のソケット通信
- 12. JavaアプリケーションとC++アプリケーション間の通信
- 13. コントローラクラスのDbContextのインスタンスフィールドに対して、Global.asaxのDbContextの静的フィールド?
- 14. javaプロセス間通信
- 15. Javaプロセス間通信
- 16. 静的クラスと静的メソッド
- 17. 静的Javaメソッドのクラスへのアクセス
- 18. Java - 汎用静的メソッド
- 19. Javaジェネリック、シングルトン、静的メソッド
- 20. Windows OS環境のC++アプリケーションとJavaアプリケーション間のプロセス間通信
- 21. アドバイスが必要:JAVAインターフェースの静的メソッド
- 22. Java Swingのフレーム、ウィンドウ、コンポーネント間の通信
- 23. ネイティブJavaメソッドは静的Javaメソッドと同等ですか?
- 24. 静的メソッドと非静的メソッドの同期ブロック
- 25. C#の静的メソッドとコンソール
- 26. なぜ静的メソッドは、私はエラーを得た静的メソッドの内部から、通常のメソッドを呼び出そうとしている間だけの静的メソッドではない非静的メソッド
- 27. Javaでのインスタンスフィールド宣言
- 28. 静的メソッドで静的メソッドと非静的メソッドにアクセスする方法
- 29. ウィンドウメッセージングを使用したJAVAとC#間のアプリケーション間通信
- 30. JVMとネイティブライブラリ間の通信
コードを投稿してください。私たちはあなたがあなたのやり方を変えることを手助けすることができます。 – kralco626
申し訳ありません、私はちょうどいくつかの資料を勉強しています。 – zdcobran
Gottcha。ボゾーの爆発はかなり良いです。あなたはそれをチェックアウトする必要があります。 – kralco626