我一样很困惑如何/为什么这可能是一个问题:不能使静态参考非静态场......但我不是在静态参考
public static long someMethod
{
long local_temp_var = PackageInfo.lastUpdateTime;
}
给出错误信息
不能使静态参考非静态字段 PackageInfo.lastUpdateTime
错误messafe要求我努力使作为tatic参考?我真的不相信我。是的,它是静态/类方法,但变量是本地的。
我一样很困惑如何/为什么这可能是一个问题:不能使静态参考非静态场......但我不是在静态参考
public static long someMethod
{
long local_temp_var = PackageInfo.lastUpdateTime;
}
给出错误信息
不能使静态参考非静态字段 PackageInfo.lastUpdateTime
错误messafe要求我努力使作为tatic参考?我真的不相信我。是的,它是静态/类方法,但变量是本地的。
好的。问题是PackageInfo
中的变量lastUpdateTime
不是静态的!但是你把它称为好像它。
你必须创建的PackageInfo
又名实例...
PackageInfo info = new PackageInfo();
那么你可以做....
long local_temp_var = info.lastUpdateTime; // Take note the "info" variable from above
我一定有脑冻结。它把我扔了“不能做一个静态引用”,但错误信息现在是完全合理的。感谢您的解释! :) – Tom
这是一个静态方法
//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不是一个类,而是一个类的实例,这会发送一个令人误解的消息 - 这会消除可维护性。
您无法访问static
上下文中的非静态字段。
由于字段lastUpdateTime
不是static
,因此它表示使其成为static
或在此处不使用。
如果在声明中,您曾提到:
static long lastUpdateTime;
然后它会罚款。
PackageInfo.lastUpdateTime应该是静态的 – upog
PackageInfo.lastUpdateTime应该是stati c,事实并非如此。PackageInfo是您创建的类吗? – tony9099