【问题标题】:non-static method isSpam(MailItem) cannot be referenced from a static context [duplicate]无法从静态上下文引用非静态方法 isSpam(MailItem) [重复]
【发布时间】:2012-10-17 04:47:12
【问题描述】:

可能重复:
java non-static method getBalance cannot be referenced from a static context

我正在尝试访问另一个类的 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);
}

这是 SpamChecker 类中的 isSpam

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

 返回真;
    } else if(item.getSubject().toLowerCase().contains("在线药房")){
        返回真;
    } else if(item.getSubject().toLowerCase().contains("便宜伟哥")) {
        返回真;
    } else if(item.getSubject().toLowerCase().contains("通用伟哥")) {
        返回真;
    } else if(item.getSubject().toLowerCase().contains("假手表")) {
        返回真;
    } else if(item.getSubject().toLowerCase().contains("replica watch")) {
        返回真;
    } 别的 {
    返回假;
    }
}

【问题讨论】:

    标签: java bluej


    【解决方案1】:

    写成:

    SpamChecker spamChecker = new SpamChecker();
    if (spamChecker.isSpam(item)) {
       // <--- your logic
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        例如:

        SpamChecker spamCheck = new SpamChecker();
        
        if (spamCheck.isSpam(item)){
        
        
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-31
          • 2011-10-24
          相关资源
          最近更新 更多