com.sun.tools.javac.code.Types.isSuperType()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(3.7k)|赞(0)|评价(0)|浏览(138)

本文整理了Java中com.sun.tools.javac.code.Types.isSuperType()方法的一些代码示例,展示了Types.isSuperType()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Types.isSuperType()方法的具体详情如下:
包路径:com.sun.tools.javac.code.Types
类名称:Types
方法名:isSuperType

Types.isSuperType介绍

[英]Is t a supertype of s?
[中]t是s的超型吗?

代码示例

代码示例来源:origin: google/error-prone

/** Return whether the given try-tree will catch the given exception type. */
private boolean tryCatchesException(TryTree tryTree, Type exceptionToCatch, VisitorState state) {
 Types types = state.getTypes();
 return tryTree.getCatches().stream()
   .anyMatch(
     (CatchTree catchClause) -> {
      Type catchesException = getType(catchClause.getParameter().getType());
      // Examine all alternative types of a union type.
      if (catchesException != null && catchesException.isUnion()) {
       return Streams.stream(((UnionClassType) catchesException).getAlternativeTypes())
         .anyMatch(caught -> types.isSuperType(caught, exceptionToCatch));
      }
      // Simple type, just check superclass.
      return types.isSuperType(catchesException, exceptionToCatch);
     });
}

代码示例来源:origin: com.google.errorprone/error_prone_core

/** Return whether the given try-tree will catch the given exception type. */
private boolean tryCatchesException(TryTree tryTree, Type exceptionToCatch, VisitorState state) {
 Types types = state.getTypes();
 return tryTree.getCatches().stream()
   .anyMatch(
     (CatchTree catchClause) -> {
      Type catchesException = getType(catchClause.getParameter().getType());
      // Examine all alternative types of a union type.
      if (catchesException != null && catchesException.isUnion()) {
       return Streams.stream(((UnionClassType) catchesException).getAlternativeTypes())
         .anyMatch(caught -> types.isSuperType(caught, exceptionToCatch));
      }
      // Simple type, just check superclass.
      return types.isSuperType(catchesException, exceptionToCatch);
     });
}

代码示例来源:origin: org.jvnet.sorcerer/sorcerer-javac

public boolean isSubtype(Type t, Type s, boolean capture) {
  if (t == s)
    return true;
  if (s.tag >= firstPartialTag)
    return isSuperType(s, t);
  Type lower = lowerBound(s);
  if (s != lower)
    return isSubtype(capture ? capture(t) : t, lower, false);
  return isSubtype.visit(capture ? capture(t) : t, s);
}
// where

代码示例来源:origin: sc.fiji/javac

public boolean isSubtype(Type t, Type s, boolean capture) {
  if (t == s)
    return true;
  if (s.tag >= firstPartialTag)
    return isSuperType(s, t);
  if (s.isCompound()) {
    for (Type s2 : interfaces(s).prepend(supertype(s))) {
      if (!isSubtype(t, s2, capture))
        return false;
    }
    return true;
  }
  Type lower = lowerBound(s);
  if (s != lower)
    return isSubtype(capture ? capture(t) : t, lower, false);
  return isSubtype.visit(capture ? capture(t) : t, s);
}
// where

代码示例来源:origin: org.kohsuke.sorcerer/sorcerer-javac

public boolean isSubtype(Type t, Type s, boolean capture) {
  if (t == s)
    return true;
  t = t.unannotatedType();
  s = s.unannotatedType();
  if (t == s)
    return true;
  if (s.isPartial())
    return isSuperType(s, t);
  if (s.isCompound()) {
    for (Type s2 : interfaces(s).prepend(supertype(s))) {
      if (!isSubtype(t, s2, capture))
        return false;
    }
    return true;
  }
  Type lower = lowerBound(s);
  if (s != lower)
    return isSubtype(capture ? capture(t) : t, lower, false);
  return isSubtype.visit(capture ? capture(t) : t, s);
}
// where

代码示例来源:origin: konsoletyper/teavm-javac

public boolean isSubtype(Type t, Type s, boolean capture) {
  if (t == s)
    return true;
  t = t.unannotatedType();
  s = s.unannotatedType();
  if (t == s)
    return true;
  if (s.isPartial())
    return isSuperType(s, t);
  if (s.isCompound()) {
    for (Type s2 : interfaces(s).prepend(supertype(s))) {
      if (!isSubtype(t, s2, capture))
        return false;
    }
    return true;
  }
  // Generally, if 's' is a type variable, recur on lower bound; but
  // for inference variables and intersections, we need to keep 's'
  // (see JLS 4.10.2 for intersections and 18.2.3 for inference vars)
  if (!t.hasTag(UNDETVAR) && !t.isCompound()) {
    // TODO: JDK-8039198, bounds checking sometimes passes in a wildcard as s
    Type lower = cvarLowerBound(wildLowerBound(s));
    if (s != lower)
      return isSubtype(capture ? capture(t) : t, lower, false);
  }
  return isSubtype.visit(capture ? capture(t) : t, s);
}
// where

相关文章

Types类方法