本文整理汇总了Java中com.sun.tools.javac.code.Types.findDescriptorSymbol方法的典型用法代码示例。如果您正苦于以下问题:Java Types.findDescriptorSymbol方法的具体用法?Java Types.findDescriptorSymbol怎么用?Java Types.findDescriptorSymbol使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.sun.tools.javac.code.Types
的用法示例。
在下文中一共展示了Types.findDescriptorSymbol方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: matchMethod
import com.sun.tools.javac.code.Types; //导入方法依赖的package包/类
@Override
public Description matchMethod(MethodTree tree, VisitorState state) {
ClassTree enclosingClazz = ASTHelpers.findEnclosingNode(state.getPath(), ClassTree.class);
if (tree.getModifiers().getFlags().contains(Modifier.DEFAULT)
&& IS_FUNCTIONAL_INTERFACE.matches(enclosingClazz, state)) {
Types types = Types.instance(state.context);
Set<Symbol> functionalSuperInterfaceSams =
enclosingClazz
.getImplementsClause()
.stream()
.filter(t -> IS_FUNCTIONAL_INTERFACE.matches(t, state))
.map(ASTHelpers::getSymbol)
.map(TypeSymbol.class::cast)
.map(types::findDescriptorSymbol) // TypeSymbol to single abstract method of the type
.collect(toImmutableSet());
// We designate an override of a superinterface SAM "behavior preserving" if it just
// calls the SAM of this interface.
Symbol thisInterfaceSam = types.findDescriptorSymbol(ASTHelpers.getSymbol(enclosingClazz));
// relatively crude: doesn't verify that the same args are passed in the same order
// so it can get false positives for behavior-preservingness (false negatives for the check)
TreeVisitor<Boolean, VisitorState> behaviorPreserving =
new BehaviorPreservingChecker(thisInterfaceSam);
if (!Collections.disjoint(
ASTHelpers.findSuperMethods(ASTHelpers.getSymbol(tree), types),
functionalSuperInterfaceSams)
&& !tree.accept(behaviorPreserving, state)) {
return describeMatch(tree);
}
}
return Description.NO_MATCH;
}
示例2: getFunctionalInterfaceMethod
import com.sun.tools.javac.code.Types; //导入方法依赖的package包/类
/**
* finds the corresponding functional interface method for a lambda expression
*
* @param tree the lambda expression
* @return the functional interface method
*/
public static Symbol.MethodSymbol getFunctionalInterfaceMethod(
LambdaExpressionTree tree, Types types) {
Type funcInterfaceType = ((JCTree.JCLambda) tree).type;
return (Symbol.MethodSymbol) types.findDescriptorSymbol(funcInterfaceType.tsym);
}