javaの非静的メソッドを静的に参照することができない
原文のままです。
https://blog.csdn.net/q610376681/article/details/49359819
今日、コードを打ち込んでいてこの問題にぶつかったのですが、一般的な問題は次のように単純化することができます。
public class Test1 {
public String get()
{
return "123";
}
public static void main(String[] args)
{
String string = get();
}
表示
Test1型から非静的メソッドget()への静的参照を作成できない。
さて、私はこれを次のように変更することにしました。
public class Test1 {
public String get()
{
return "123";
}
public static void main(String[] args)
{
static String string = get();
}
}
でも、やっぱりダメなんです。
java bookに目を通すことで判明しました。
1. javaの静的メソッドは、非静的メソッドやメンバを直接呼び出すことができず、thisキーワードも使えない(これが今回の問題の原因、静的mainメソッドで非静的getメソッドを呼び出したのです)。
説明 クラスの静的メソッドまたはプロパティは、本質的に、クラスのメンバーではなく、Java仮想マシンがクラスをロードするとき、これらの静的なものはすでにオブジェクトを持って、それだけで"居住"クラスで、クラスのコンストラクタ(コンストラクタ)によってインスタンス化する必要はありません。非静的プロパティまたはメソッドは、クラスのロードでは存在しない、クラスのインスタンスオブジェクトの存在に依存できるコンストラクタ後に実行する必要がありながら。だから、コンパイラは、静的なメソッドの非静的なメソッドを呼び出すときにエラーが報告されます(型から非静的なメソッドfunc()への静的な参照を行うことはできません)。
javaでは、メソッド内のローカル変数をstaticとして宣言することはできません。
main() 関数は静的で、戻り値はなく、形式的な参照は配列です。
非静的メンバが静的メンバを任意に呼び出せる
スタティックは反人間的であることがわかった。
おそらく、複数のクラスが1つのデータを共有できるようにするためでしょう。
おそらく、関数を静的にし、変数をグローバルに静的に宣言するように修正したのでしょう
方法1
public class Test1 {
static String string;
public static String get()
{
return "123";
}
public static void main(String[] args)
{
string = get();
System.out.print(string);
}
}
方法2
public class Test1 {
public String get() {
return "123";
}
public static void main(String[] args) {
Test1 c = new Test1();
String string = c.get();
System.out.print(string);
}
}
関連
-
NullPointerException - java.lang.
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
プロジェクトの依存関係を解決できない。
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
強制型変換について
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
-bash: java: コマンドが見つからない 解決方法
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
java send https request prompt java.security.cert.について。
-
MyBatisカスタムタイプハンドラ TypeHandler
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
無効なメソッド宣言
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
eclipse にリソースリーク:'in' が閉じない
-
コンストラクタDate()が未定義である問題
-
java1.8ソースコード ArrayListソースコード解釈