无法访问 SearchTerm 匿名内的字符串 class

Can't access string inside SearchTerm anonymous class

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

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。谢谢

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

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

final String searchText = mailParam.getSearchText();

您可以将 searchText 作为 instance 变量而不是 local 变量 上面一行