[解決済み] 非静的メソッドへの静的参照はできない
質問
Javaで多言語アプリケーションを構築しています。の文字列を挿入するとエラーが発生する。
R.string
リソースXMLファイルから文字列値を挿入する際にエラーが発生します。
public static final String TTT = (String) getText(R.string.TTT);
これがエラーメッセージです。
エラーです。非静的メソッドであるgetText(int)への静的な参照を、型 Context
この原因は何でしょうか、またどのように解決すればよいでしょうか。
どのように解決するのですか?
では
getText()
は非静的なので、静的メソッドからこれを呼び出すことはできません。
その理由を理解するためには、この2つの違いを理解する必要があります。
インスタンス(非静的)メソッドは、特定の型(クラス)を持つオブジェクトに対して動作します。これらは、このようにnewで作成されます。
SomeClass myObject = new SomeClass();
インスタンスメソッドを呼び出すには、インスタンス上で呼び出します (
myObject
):
myObject.getText(...)
しかし、静的なメソッドやフィールドを呼び出すことができます
だけです。
を直接タイプ上で呼び出すことができます。例えばこのように
前の文は正しくありません。
のようなオブジェクト参照で静的フィールドを参照することもできます。
myObject.staticMethod()
のように参照することもできますが、これはクラス変数であることを明確にしないため、推奨されません。
... = SomeClass.final
また、両者は異なるデータ空間(インスタンスデータとクラスデータ)を操作するため、一緒に動作させることはできません
説明してみましょう。このクラス(psuedocode)を考えてみましょう。
class Test {
string somedata = "99";
string getText() { return somedata; }
static string TTT = "0";
}
さて、次のようなユースケースがあります。
Test item1 = new Test();
item1.somedata = "200";
Test item2 = new Test();
Test.TTT = "1";
値は何ですか?
まあ
in item1 TTT = 1 and somedata = 200
in item2 TTT = 1 and somedata = 99
言い換えると
TTT
は、その型のすべてのインスタンスで共有されるデータムです。だから、次のように言っても意味がない。
class Test {
string somedata = "99";
string getText() { return somedata; }
static string TTT = getText(); // error there is is no somedata at this point
}
そこで問題なのは、なぜ TTT は静的なのか、それともなぜgetText()は静的ではないのか?
を削除して
static
を削除すれば、このエラーを克服できるはずです。しかし、あなたの型が何をするのか理解できなければ、次のエラーが発生するまでの応急処置に過ぎません。の要件は何でしょうか?
getText()
が非静的であることを必要とする要件は何ですか?
関連
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
[解決済み] 配置されたアセンブリのマニフェスト定義がアセンブリ参照と一致しない
-
Javaでよくある構文エラー
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
ジャバアレイ
-
Javaがテキストファイルを読み込む
-
maven レポート エラー 解決不可能な親POM
-
[解決済み] javadocでメソッドを参照するには?
-
[解決済み] Javaインターフェースでスタティックメソッドを定義できないのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
Javaでよくある構文エラー
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
Jsoup-Crawlingの動作
-
java -jarコマンドでパッケージを実行すると、無効または破損したjarfile xxxx.jarが表示される。
-
API の戻り値を処理するために ResponseEntity を使用する
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
Java基礎 - マッピングとQ/A
-
[解決済み】型Twoから非静的メソッドfxn(int)への静的参照を作れない【重複あり
-
[解決済み] Javaで非静的メソッドを静的メソッドで呼び出す [重複]。