我正在尝试使用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。感谢
答案 0 :(得分:1)
https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
匿名类无法访问其封闭范围中未声明为final或者有效final的局部变量。与嵌套类一样,匿名类中的类型(例如变量)的声明会影响封闭范围中具有相同名称的任何其他声明。
final String searchText = mailParam.getSearchText();
您可以将 searchText 变为实例变量,而不是上面一行本地变量