"静的メソッドはインスタンスフィールドと通信できません。静的フィールドのみと通信することがあります。"私はこの引用された行を読まなければなりません。私がこのフォーラムで他のスレッドを勉強したとき、私は静的メソッドでインスタンスフィールドを使用できることを発見しました。だから、これは何を意味するのですか?本当ですか?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の静的メソッド
- 6. 静的メソッドと非静的メソッドのJava同期
- 7. C#とJava間の通信
- 8. Javaのインターフェースの静的メソッド
- 9. Javaスレッドセーフ:enumと静的メソッド
- 10. javaのsyncrhonized静的メソッド
- 11. Javaの静的メソッド - ベストプラクティス?
- 12. Javaの名前静的メソッド
- 13. ジェネリックと静的メソッドの問題 - Java
- 14. rubyとjavaの間の通信
- 15. PHPとJavaの間の通信
- 16. FlexとJavaの間の通信?
- 17. Javaとアプレットの間の通信
- 18. Javaプログラム間の通信
- 19. コントローラクラスのDbContextのインスタンスフィールドに対して、Global.asaxのDbContextの静的フィールド?
- 20. JavaアプリケーションとC++アプリケーション間の通信
- 21. アクティビティクラスとJavaクラス間の通信
- 22. JavaとC#間のUDP通信
- 23. GroovyとJavaプログラム間のソケット通信
- 24. ネイティブネイティブモジュールとJavaネイティブモジュール間の通信
- 25. Swift iOSとJavaソケット間のTCP通信
- 26. 静的クラスと静的メソッド
- 27. 静的Javaメソッドのクラスへのアクセス
- 28. 静的メソッドのJavaスレッドの安全性
- 29. Droolsの輸入Javaの静的メソッド
- 30. 静的メソッドでのJavaマルチスレッドの作成
コードを投稿してください。私たちはあなたがあなたのやり方を変えることを手助けすることができます。 – kralco626
申し訳ありません、私はちょうどいくつかの資料を勉強しています。 – zdcobran
Gottcha。ボゾーの爆発はかなり良いです。あなたはそれをチェックアウトする必要があります。 – kralco626