【发布时间】:2011-04-07 12:37:36
【问题描述】:
我似乎找不到在我的静态方法中使用非静态引用的位置,代码是:
public class Item {
public static final Map ITEM_STATUSES = new HashMap();
static {
ITEM_STATUSES.put(STATUS_NEW, "New");
}
public static String getItemStatusFromName(final String p_itemStatusName) {
Iterator statusIterator = Item.ITEM_STATUSES.entrySet().iterator();
while (statusIterator.hasNext()) {
Entry statusEntry = (Entry)statusIterator.next();
if (((String)statusEntry.getValue()).equals(p_itemStatusName)) {
return (String)statusEntry.getKey();
}
}
return "";
}
}
在另一个班级
private void getName(){
String itemStatus = Item.getItemStatusFromName(p_itemStatusName);
}
编译器说:无法从 Item 类型对非静态方法 getItemStatusFromName(String) 进行静态引用
【问题讨论】:
-
确定保存并编译了其他类?
-
是的,保存,刷新,作品。
-
您在不同的包中没有
Item类的旧副本吗?无论如何,代码看起来都不错,只是归结为您并没有真正运行您当前正在查看的代码。 -
您可以尝试注释 getItemStatusFromName() 的全部内容并逐行取消注释以确定导致错误的行。
-
Eclipse 可能需要重新启动/完全重建。问题中发布的代码看起来不错(尽管我会改用枚举,但这是一个不同的问题;))。
标签: java static-methods