无法对非静态字段进行静态引用...但我没有制作静态引用

时间:2013-09-26 09:39:33

标签: java android

我很担心这可能是什么/为什么会出现问题:

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

提供错误消息

  

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

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

4 个答案:

答案 0 :(得分:3)

确定。问题是lastUpdateTime中的变量PackageInfo不是静态的!但你把它称之为就好了。

JavaDoc of PackageInfo

您必须创建PackageInfo又名...

的新实例

PackageInfo info = new PackageInfo();

然后你可以做....

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

答案 1 :(得分:2)

您无法访问static上下文中的非静态字段。

由于字段lastUpdateTime不是static,所以要将其设为static或在此处不使用。

答案 2 :(得分: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不是类,而是类的实例,则会发送误导性消息 - 这会导致可维护性。

答案 3 :(得分:0)

如果您在声明中提到:

static long lastUpdateTime;

然后就可以了。