当前位置: 首页>>代码示例>>Java>>正文


Java Types.findDescriptorSymbol方法代码示例

本文整理汇总了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;
}
 
开发者ID:google,项目名称:error-prone,代码行数:34,代码来源:FunctionalInterfaceMethodChanged.java

示例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);
}
 
开发者ID:uber,项目名称:NullAway,代码行数:12,代码来源:NullabilityUtil.java


注:本文中的com.sun.tools.javac.code.Types.findDescriptorSymbol方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。