1

可能重复:
无法从静态上下文引用 java 非静态方法 getBalance

我正在尝试访问另一个类的 isSpam 方法,但它不允许我。它一直说不能引用非静态方法。请问我能得到一点帮助吗?这是我的 isSpam 代码和要检查的代码

public void post(MailItem item)

    if (SpamChecker.isSpam(item)) {
    }
    String name = item.getTo();
    if(!items.containsKey(name)) {
        items.put(name,new ArrayList<MailItem>());
    }
    items.get(name).add(item);
}

and here's the isSpam from SpamChecker class

public boolean isSpam(MailItem item) { if (item.getSubject().toLowerCase().startsWith("spam")){

        return true;
    } else if(item.getSubject().toLowerCase().contains("online pharmacy")){
        return true;
    } else if(item.getSubject().toLowerCase().contains("cheap viagra")) {
        return true;
    } else if(item.getSubject().toLowerCase().contains("generic viagra")) {
        return true;
    } else if(item.getSubject().toLowerCase().contains("fake watches")) {
        return true;
    } else if(item.getSubject().toLowerCase().contains("replica watches")) {
        return true;
    } else {
    return false;
    }
}

4

3 回答 3

0

写成:

SpamChecker spamChecker = new SpamChecker();
if (spamChecker.isSpam(item)) {
   // <--- your logic
}
于 2012-10-17T04:57:19.430 回答
0

根据我的理解isSpam()方法是一种非静态方法,因此要访问它,请创建一个类实例 SpamChecker

例如:

SpamChecker spamCheck = new SpamChecker();

if (spamCheck.isSpam(item)){



}
于 2012-10-17T05:25:30.440 回答
0

Dantuch 或 Yogendra 的答案很好,或者您也可以将方法 isPam() 设为静态。

于 2012-10-17T05:18:12.167 回答