本文整理汇总了Java中com.sun.tools.javac.code.BoundKind类的典型用法代码示例。如果您正苦于以下问题:Java BoundKind类的具体用法?Java BoundKind怎么用?Java BoundKind使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
BoundKind类属于com.sun.tools.javac.code包,在下文中一共展示了BoundKind类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: Wildcard
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
public WildcardTree Wildcard(Kind kind, Tree type) {
final BoundKind boundKind;
switch (kind) {
case UNBOUNDED_WILDCARD:
boundKind = BoundKind.UNBOUND;
break;
case EXTENDS_WILDCARD:
boundKind = BoundKind.EXTENDS;
break;
case SUPER_WILDCARD:
boundKind = BoundKind.SUPER;
break;
default:
throw new IllegalArgumentException("Unknown wildcard bound " + kind);
}
TypeBoundKind tbk = make.at(NOPOS).TypeBoundKind(boundKind);
return make.at(NOPOS).Wildcard(tbk, (JCExpression)type);
}
示例2: makeWildcard
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
protected Type makeWildcard(Type upper, Type lower) {
BoundKind bk;
Type bound;
if (upper.hasTag(BOT)) {
upper = syms.objectType;
}
boolean isUpperObject = types.isSameType(upper, syms.objectType);
if (!lower.hasTag(BOT) && isUpperObject) {
bound = lower;
bk = SUPER;
} else {
bound = upper;
bk = isUpperObject ? UNBOUND : EXTENDS;
}
return new WildcardType(bound, bk, syms.boundClass);
}
示例3: visitWildcard
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
@Override public void visitWildcard(JCWildcard tree) {
printNode(tree);
Object o;
// In some javacs (older ones), JCWildcard.kind is a BoundKind, which is an enum. In newer ones its a TypeBoundKind which is a JCTree, i.e. has positions.
try {
o = tree.getClass().getField("kind").get(tree);
} catch (Exception e) {
throw new RuntimeException("There's no field at all named 'kind' in JCWildcard? This is not a javac I understand.", e);
}
if (o instanceof JCTree) {
child("kind", (JCTree)o);
} else if (o instanceof BoundKind) {
property("kind", String.valueOf(o));
}
child("inner", tree.inner);
indent--;
}
示例4: visitWildcard
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
@Override
public void visitWildcard(JCWildcard tree) {
if (tree.kind.kind == BoundKind.UNBOUND)
result = tree.kind.toString();
else
result = tree.kind + " " + print(tree.inner);
}
示例5: genericMethodInvocation
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
@Test
public void genericMethodInvocation() {
compile(
"import java.util.Collections;",
"import java.util.List;",
"class GenericTemplateExample {",
" public <E> List<E> example(List<E> list) {",
" return Collections.unmodifiableList(list);",
" }",
"}");
UTypeVar tVar = UTypeVar.create("T");
UTypeVar eVar = UTypeVar.create("E");
assertEquals(
ExpressionTemplate.create(
ImmutableClassToInstanceMap.<Annotation>builder().build(),
ImmutableList.of(eVar),
ImmutableMap.of("list", UClassType.create("java.util.List", eVar)),
UMethodInvocation.create(
UStaticIdent.create(
"java.util.Collections",
"unmodifiableList",
UForAll.create(
ImmutableList.of(tVar),
UMethodType.create(
UClassType.create("java.util.List", tVar),
UClassType.create(
"java.util.List",
UWildcardType.create(BoundKind.EXTENDS, tVar))))),
UFreeIdent.create("list")),
UClassType.create("java.util.List", eVar)),
UTemplater.createTemplate(context, getMethodDeclaration("example")));
}
示例6: equality
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
@Test
public void equality() {
UType objectType = UClassType.create("java.lang.Object", ImmutableList.<UType>of());
UType setType = UClassType.create("java.util.Set", ImmutableList.<UType>of(objectType));
new EqualsTester()
.addEqualityGroup(UWildcardType.create(BoundKind.UNBOUND, objectType)) // ?
.addEqualityGroup(UWildcardType.create(BoundKind.EXTENDS, objectType)) // ? extends Object
.addEqualityGroup(UWildcardType.create(BoundKind.EXTENDS, setType)) // ? extends Set<Object>
.addEqualityGroup(UWildcardType.create(BoundKind.SUPER, setType)) // ? super Set<Object>
.testEquals();
}
示例7: visitTypeReference
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
@Override
public boolean visitTypeReference(TypeReference node) {
WildcardKind wildcard = node.astWildcard();
if (wildcard == WildcardKind.UNBOUND) {
return posSet(node, treeMaker.Wildcard(treeMaker.TypeBoundKind(BoundKind.UNBOUND), null));
}
JCExpression result = plainTypeReference(node);
result = addWildcards(node, result, wildcard);
result = addDimensions(node, result, node.astArrayDimensions());
return set(node, result);
}
示例8: addWildcards
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
private JCExpression addWildcards(Node node, JCExpression type, WildcardKind wildcardKind) {
TypeBoundKind typeBoundKind;
switch (wildcardKind) {
case NONE:
return type;
case EXTENDS:
typeBoundKind = treeMaker.TypeBoundKind(BoundKind.EXTENDS);
Position jcExtendsPos = getConversionPositionInfo(node, "extends");
if (jcExtendsPos == null) {
setPos(posOfStructure(node, "extends", true), posOfStructure(node, "extends", false), typeBoundKind);
} else {
setPos(jcExtendsPos.getStart(), jcExtendsPos.getEnd(), typeBoundKind);
}
return setPos(type.pos, endPosTable.get(type), treeMaker.Wildcard(typeBoundKind, type));
case SUPER:
typeBoundKind = treeMaker.TypeBoundKind(BoundKind.SUPER);
Position jcSuperPos = getConversionPositionInfo(node, "super");
if (jcSuperPos == null) {
setPos(posOfStructure(node, "super", true), posOfStructure(node, "super", false), typeBoundKind);
} else {
setPos(jcSuperPos.getStart(), jcSuperPos.getEnd(), typeBoundKind);
}
return setPos(type.pos, endPosTable.get(type), treeMaker.Wildcard(typeBoundKind, type));
default:
throw new IllegalStateException("Unexpected unbound wildcard: " + wildcardKind);
}
}
示例9: visitWildcardType
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
@Override
public String visitWildcardType(Type.WildcardType t, Void aVoid) {
StringBuilder sb = new StringBuilder();
sb.append(t.kind);
if (t.kind != BoundKind.UNBOUND) {
sb.append(t.type.accept(this, null));
}
return sb.toString();
}
示例10: genericMethodInvocation
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
@Test
public void genericMethodInvocation() {
compile(
"import java.util.Collections;",
"import java.util.List;",
"class GenericTemplateExample {",
" public <E> List<E> example(List<E> list) {",
" return Collections.unmodifiableList(list);",
" }",
"}");
UTypeVar tVar = UTypeVar.create("T");
UTypeVar eVar = UTypeVar.create("E");
assertEquals(
ExpressionTemplate.create(
ImmutableClassToInstanceMap.<Annotation>builder().build(),
ImmutableList.of(eVar),
ImmutableMap.of("list", UClassType.create("java.util.List", eVar)),
UMethodInvocation.create(
UStaticIdent.create(
"java.util.Collections",
"unmodifiableList",
UForAll.create(
ImmutableList.of(tVar),
UMethodType.create(
UClassType.create("java.util.List", tVar),
UClassType.create(
"java.util.List", UWildcardType.create(BoundKind.EXTENDS, tVar))))),
UFreeIdent.create("list")),
UClassType.create("java.util.List", eVar)),
UTemplater.createTemplate(context, getMethodDeclaration("example")));
}
示例11: equality
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
@Test
public void equality() {
UType objectType = UClassType.create("java.lang.Object", ImmutableList.<UType>of());
UType setType = UClassType.create("java.util.Set", ImmutableList.<UType>of(objectType));
new EqualsTester()
.addEqualityGroup(UWildcardType.create(BoundKind.UNBOUND, objectType)) // ?
.addEqualityGroup(UWildcardType.create(BoundKind.EXTENDS, objectType)) // ? extends Object
.addEqualityGroup(UWildcardType.create(BoundKind.EXTENDS, setType)) // ? extends Set<Object>
.addEqualityGroup(UWildcardType.create(BoundKind.SUPER, setType)) // ? super Set<Object>
.testEquals();
}
示例12: visitWildcard
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
@Override
public void visitWildcard(JCWildcard tree) {
try {
print(tree.kind);
if (tree.kind.kind != BoundKind.UNBOUND)
printExpr(tree.inner);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
示例13: visitWildcard
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
public void visitWildcard(JCWildcard tree) {
//- System.err.println("visitWildcard("+tree+");");//DEBUG
Type type = (tree.kind.kind == BoundKind.UNBOUND)
? syms.objectType
: attribType(tree.inner, env);
result = check(tree, new WildcardType(chk.checkRefType(tree.pos(), type),
tree.kind.kind,
syms.boundClass),
TYP, pkind, pt);
}
示例14: TypeBoundKind
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
protected TypeBoundKind(BoundKind kind) {
this.kind = kind;
}
示例15: Wildcard
import com.sun.tools.javac.code.BoundKind; //导入依赖的package包/类
public WildcardType Wildcard(BoundKind bk, Type bound) {
return new WildcardType(bound, bk, predef.boundClass);
}