0

これがどのように/なぜ問題になるのか、私はかなり混乱しています:

public static long someMethod
{
  long local_temp_var = PackageInfo.lastUpdateTime;    
}

エラーメッセージを出す

非静的フィールド PackageInfo.lastUpdateTime への静的参照を作成できません

エラー messafe は、静的参照を作成しようとしていると主張していますか? 私は自分がそうであるとは本当に信じていません。はい、静的/クラスメソッドにありますが、変数はローカル変数です。

4

4 に答える 4

3

Ok。問題は、変数lastUpdateTimePackageInfo静的ではないことです! しかし、あなたはそれをあたかもそうであるかのように呼んでいます。

PackageInfo の JavaDoc

PackageInfo別名の新しいインスタンスを作成する必要があります...

PackageInfo info = new PackageInfo();

それからあなたはすることができます....

long local_temp_var = info.lastUpdateTime; // Take note the "info" variable from above

于 2013-09-26T10:36:10.143 に答える
2

staticコンテキスト内の非静的フィールドにはアクセスできません。

フィールドlastUpdateTime が非なので、ここstaticで作るstaticか使わないかということです。

于 2013-09-26T09:41:24.747 に答える
1

これは静的メソッドです

//notice the () brackets you miss in your question.
public static long someMethod() {...}

その中のすべての参照は静的と見なされます。

but the variable is a local one.

はい、ローカルインスタンス変数です。静的ではありません-- これが表示されるエラーの原因です。

また、ネーミングはオフのようです。PackageInfoローカル変数のように見えますが、これは名前の付け方ではありません。小文字で始まる必要があります。

PackageInfo.somethingメッセージを送信するJava の行: " PackageInfois a class, and we access its static field named something". PackageInfo がクラスではなく、クラスのインスタンスである場合、誤解を招くメッセージが送信され、保守性が損なわれます。

于 2013-09-26T09:41:18.620 に答える