无法访问SearchTerm匿名类中的字符串

时间:2018-04-19 09:51:42

标签: java javamail

我正在尝试使用java mail api(javax.mail)中的主题文本搜索邮件,但是我无法像这样访问匿名类中的主题字符串,

Message[] messages = null;
final String searchText = mailParam.getSearchText();
SearchTerm serachCondition = new SearchTerm() {
    private static final long serialVersionUID = 1L;
        @Override
        public boolean match(Message message) {
            try {
                if (message.getSubject().contains(searchText)) {
                    return true;
                }
            } catch (MessagingException ex) {
                ex.printStackTrace();
                logger.error(ex.getMessage());
            }
            return false;
        }
    };
messages = folder.search(serachCondition);

在这里,我无法访问重写方法匹配中的最终字符串searchText。感谢

1 个答案:

答案 0 :(得分:1)

https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

匿名类无法访问其封闭范围中未声明为final或者有效final的局部变量。与嵌套类一样,匿名类中的类型(例如变量)的声明会影响封闭范围中具有相同名称的任何其他声明。

final String searchText = mailParam.getSearchText();

您可以将 searchText 变为实例变量,而不是上面一行本地变量