静的メソッドのフィールドを参照するときにキーワード「this」を使用できないのはなぜですか?
参照変数を介して静的メンバーにアクセスすることは問題ないと考えましたが、そのthis
ようなメンバーにアクセスするために使用することは問題ありません。以下のコードを見てください。
static int month;
public static void setMonth(int x)
{
Date date = new Date();
date.month = x; //fine, why ?
this.month = x; //compiler error, why ?
}
this
参照変数と同じではないことを明確に示しています。もしそうなら、それは本当は何ですか?this
静的コンテキストからアクセスできない理由を理解するには、 の本当の意味を理解する必要があります。
this
静的なコンテキストからは使用できないと言っているランダムなブログやオラクルのチュートリアルへのリンクを私に与えないでください-私はすでにそれを知っています. その先を見据えて、なぜ使えないのかを理解したい。
リンクされた質問のコード -
public class Date
{
static int month;
public static void setMonth(int x)
{
this.month = x; //compiler error
}
public static int getMonth()
{
return month; //compiles just fine, no error
}
}