我很担心这可能是什么/为什么会出现问题:
public static long someMethod
{
long local_temp_var = PackageInfo.lastUpdateTime;
}
提供错误消息
无法对非静态字段进行静态引用 PackageInfo.lastUpdateTime
错误messafe声称我正在尝试制作静态引用?我真的不相信自己。是的,它是静态/类方法,但变量是本地变量。
答案 0 :(得分:3)
确定。问题是lastUpdateTime
中的变量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;
然后就可以了。