0

我很困惑如何/为什么这可能是一个问题:

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

给出错误信息

无法对非静态字段 PackageInfo.lastUpdateTime 进行静态引用

错误messafe声称我正在尝试进行静态引用?我真的不相信我是。是的,它在静态/类方法中,但变量是本地变量。

4

4 回答 4

3

行。问题是变量不是静态lastUpdateTime的!PackageInfo但你称它为好像它是。

PackageInfo 的 JavaDoc

您必须创建一个PackageInfoaka 的新实例...

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似乎是您的局部变量,但这不是我们命名它们的方式:应该以小写字母开头。

Java 中的一行读取PackageInfo.something发送消息:“PackageInfo是一个类,我们访问其名为something”的静态字段。如果 PackageInfo 不是一个类,而是一个类的实例,这会发送一个误导性消息 - 这会破坏可维护性。

于 2013-09-26T09:41:18.620 回答
0

如果您在声明中提到:

static long lastUpdateTime;

然后就好了。

于 2013-09-26T09:42:57.687 回答