本文整理汇总了Java中com.google.errorprone.annotations.concurrent.LazyInit类的典型用法代码示例。如果您正苦于以下问题:Java LazyInit类的具体用法?Java LazyInit怎么用?Java LazyInit使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
LazyInit类属于com.google.errorprone.annotations.concurrent包,在下文中一共展示了LazyInit类的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: matchSynchronized
import com.google.errorprone.annotations.concurrent.LazyInit; //导入依赖的package包/类
@Override
public Description matchSynchronized(SynchronizedTree tree, VisitorState state) {
Symbol symbol = ASTHelpers.getSymbol(stripParentheses(tree.getExpression()));
if (!(symbol instanceof VarSymbol)) {
return NO_MATCH;
}
// TODO(cushon): check that the receiver doesn't contain mutable state.
// Currently 'this.locks[i].mu' is accepted if 'mu' is final but 'locks' is non-final.
VarSymbol varSymbol = (VarSymbol) symbol;
if (varSymbol.isLocal() || varSymbol.isStatic() || (varSymbol.flags() & Flags.FINAL) != 0) {
return NO_MATCH;
}
if (ASTHelpers.hasAnnotation(varSymbol, LazyInit.class, state)) {
return NO_MATCH;
}
Name ownerName = varSymbol.owner.enclClass().getQualifiedName();
if (Stream.of("java.io.Writer", "java.io.Reader").anyMatch(ownerName::contentEquals)) {
// These classes contain a non-final 'lock' variable available to subclasses, and we can't
// make these locks final.
return NO_MATCH;
}
return describeMatch(tree.getExpression());
}