我很困惑如何/为什么这可能是一个问题:
public static long someMethod
{
long local_temp_var = PackageInfo.lastUpdateTime;
}
给出错误信息
无法对非静态字段 PackageInfo.lastUpdateTime 进行静态引用
错误messafe声称我正在尝试进行静态引用?我真的不相信我是。是的,它在静态/类方法中,但变量是本地变量。
行。问题是变量不是静态lastUpdateTime
的!PackageInfo
但你称它为好像它是。
您必须创建一个PackageInfo
aka 的新实例...
PackageInfo info = new PackageInfo();
然后你可以做......
long local_temp_var = info.lastUpdateTime; // Take note the "info" variable from above
您无法访问static
上下文中的非静态字段。
由于该字段lastUpdateTime
是非字段static
,因此这里是说制作static
或不使用。
这是一个静态方法
//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 long lastUpdateTime;
然后就好了。