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


Java TypeAnnotation类代码示例

本文整理汇总了Java中com.sun.tools.classfile.TypeAnnotation的典型用法代码示例。如果您正苦于以下问题:Java TypeAnnotation类的具体用法?Java TypeAnnotation怎么用?Java TypeAnnotation使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


TypeAnnotation类属于com.sun.tools.classfile包,在下文中一共展示了TypeAnnotation类的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: check

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
private void check(NoteKind kind, RuntimeTypeAnnotations_attribute attr) {
    if (attr == null)
        return;

    for (TypeAnnotation anno: attr.annotations) {
        Position p = anno.position;
        Note note = null;
        if (p.offset != -1)
            addNote(p.offset, note = new Note(kind, anno));
        if (p.lvarOffset != null) {
            for (int i = 0; i < p.lvarOffset.length; i++) {
                if (note == null)
                    note = new Note(kind, anno);
                addNote(p.lvarOffset[i], note);
            }
        }
    }
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:19,代码来源:TypeAnnotationWriter.java

示例2: run

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
public void run() throws Exception {
    ClassFile cf = getClassFile("TypeAnnotationPropagationTest$Test.class");

    Method f = null;
    for (Method m : cf.methods) {
        if (m.getName(cf.constant_pool).contains("f")) {
            f = m;
            break;
        }
    }

    int idx = f.attributes.getIndex(cf.constant_pool, Attribute.Code);
    Code_attribute cattr = (Code_attribute) f.attributes.get(idx);
    idx = cattr.attributes.getIndex(cf.constant_pool, Attribute.RuntimeVisibleTypeAnnotations);
    RuntimeVisibleTypeAnnotations_attribute attr =
            (RuntimeVisibleTypeAnnotations_attribute) cattr.attributes.get(idx);

    TypeAnnotation anno = attr.annotations[0];
    assertEquals(anno.position.lvarOffset, new int[] {3}, "start_pc");
    assertEquals(anno.position.lvarLength, new int[] {8}, "length");
    assertEquals(anno.position.lvarIndex, new int[] {1}, "index");
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:23,代码来源:TypeAnnotationPropagationTest.java

示例3: findAnnotations

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
private static void findAnnotations(ClassFile cf, Method m, String name, List<TypeAnnotation> annos) {
    int index = m.attributes.getIndex(cf.constant_pool, name);
    if (index != -1) {
        Attribute attr = m.attributes.get(index);
        assert attr instanceof RuntimeTypeAnnotations_attribute;
        RuntimeTypeAnnotations_attribute tAttr = (RuntimeTypeAnnotations_attribute)attr;
        annos.addAll(Arrays.asList(tAttr.annotations));
    }

    int cindex = m.attributes.getIndex(cf.constant_pool, Attribute.Code);
    if (cindex != -1) {
        Attribute cattr = m.attributes.get(cindex);
        assert cattr instanceof Code_attribute;
        Code_attribute cAttr = (Code_attribute)cattr;
        index = cAttr.attributes.getIndex(cf.constant_pool, name);
        if (index != -1) {
            Attribute attr = cAttr.attributes.get(index);
            assert attr instanceof RuntimeTypeAnnotations_attribute;
            RuntimeTypeAnnotations_attribute tAttr = (RuntimeTypeAnnotations_attribute)attr;
            annos.addAll(Arrays.asList(tAttr.annotations));
        }
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:24,代码来源:ReferenceInfoUtil.java

示例4: compare

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
public static boolean compare(Map<String, TypeAnnotation.Position> expectedAnnos,
        List<TypeAnnotation> actualAnnos, ClassFile cf) throws InvalidIndex, UnexpectedEntry {
    if (actualAnnos.size() != expectedAnnos.size()) {
        throw new ComparisionException("Wrong number of annotations",
                expectedAnnos,
                actualAnnos);
    }

    for (Map.Entry<String, TypeAnnotation.Position> e : expectedAnnos.entrySet()) {
        String aName = e.getKey();
        TypeAnnotation.Position expected = e.getValue();
        TypeAnnotation actual = findAnnotation(aName, actualAnnos, cf);
        if (actual == null)
            throw new ComparisionException("Expected annotation not found: " + aName);

        if (!areEquals(expected, actual.position)) {
            throw new ComparisionException("Unexpected position for annotation : " + aName +
                    "\n  Expected: " + expected.toString() +
                    "\n  Found: " + actual.position.toString());
        }
    }
    return true;
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:24,代码来源:ReferenceInfoUtil.java

示例5: expectedOf

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
private Map<String, TypeAnnotation.Position> expectedOf(Method m) {
    TADescription ta = m.getAnnotation(TADescription.class);
    TADescriptions tas = m.getAnnotation(TADescriptions.class);

    if (ta == null && tas == null)
        return null;

    Map<String, TypeAnnotation.Position> result =
        new HashMap<>();

    if (ta != null)
        result.putAll(expectedOf(ta));

    if (tas != null) {
        for (TADescription a : tas.value()) {
            result.putAll(expectedOf(a));
        }
    }

    return result;
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:22,代码来源:Driver.java

示例6: areEquals

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
public static boolean areEquals(TypeAnnotation.Position p1, TypeAnnotation.Position p2) {
    if (p1 == p2)
        return true;
    if (p1 == null || p2 == null)
        return false;

    return ((p1.type == p2.type)
            && (p1.location.equals(p2.location))
            && areEquals(p1.offset, p2.offset)
            && areEquals(p1.lvarOffset, p2.lvarOffset)
            && areEquals(p1.lvarLength, p2.lvarLength)
            && areEquals(p1.lvarIndex, p2.lvarIndex)
            && areEquals(p1.bound_index, p2.bound_index)
            && areEquals(p1.parameter_index, p2.parameter_index)
            && areEquals(p1.type_index, p2.type_index)
            && areEquals(p1.exception_index, p2.exception_index));
}
 
开发者ID:ojdkbuild,项目名称:lookaside_java-1.8.0-openjdk,代码行数:18,代码来源:ReferenceInfoUtil.java

示例7: compare

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
public static boolean compare(Map<String, TypeAnnotation.Position> expectedAnnos,
        List<TypeAnnotation> actualAnnos, ClassFile cf) throws InvalidIndex, UnexpectedEntry {
    if (actualAnnos.size() != expectedAnnos.size()) {
        throw new ComparisionException("Wrong number of annotations",
                expectedAnnos,
                actualAnnos);
    }

    for (Map.Entry<String, TypeAnnotation.Position> e : expectedAnnos.entrySet()) {
        String aName = e.getKey();
        TypeAnnotation.Position expected = e.getValue();
        TypeAnnotation actual = findAnnotation(aName, actualAnnos, cf);
        if (actual == null)
            throw new ComparisionException("Expected annotation not found: " + aName);

        // TODO: you currently get an exception if the test case does not use all necessary
        // annotation attributes, e.g. forgetting the offset for a local variable.
        // It would be nicer to give an understandable warning instead.
        if (!areEquals(expected, actual.position)) {
            throw new ComparisionException("Unexpected position for annotation : " + aName +
                    "\n  Expected: " + expected.toString() +
                    "\n  Found: " + actual.position.toString());
        }
    }
    return true;
}
 
开发者ID:ojdkbuild,项目名称:lookaside_java-1.8.0-openjdk,代码行数:27,代码来源:ReferenceInfoUtil.java

示例8: expectedOf

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
private Map<String, TypeAnnotation.Position> expectedOf(Method m) {
    TADescription ta = m.getAnnotation(TADescription.class);
    TADescriptions tas = m.getAnnotation(TADescriptions.class);

    if (ta == null && tas == null)
        return null;

    Map<String, TypeAnnotation.Position> result =
        new HashMap<String, TypeAnnotation.Position>();

    if (ta != null)
        result.putAll(expectedOf(ta));

    if (tas != null) {
        for (TADescription a : tas.value()) {
            result.putAll(expectedOf(a));
        }
    }

    return result;
}
 
开发者ID:ojdkbuild,项目名称:lookaside_java-1.8.0-openjdk,代码行数:22,代码来源:Driver.java

示例9: compare

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
public static boolean compare(List<Pair<String, TypeAnnotation.Position>> expectedAnnos,
        List<TypeAnnotation> actualAnnos, ClassFile cf) throws InvalidIndex, UnexpectedEntry {
    if (actualAnnos.size() != expectedAnnos.size()) {
        throw new ComparisionException("Wrong number of annotations",
                expectedAnnos,
                actualAnnos);
    }

    for (Pair<String, TypeAnnotation.Position> e : expectedAnnos) {
        String aName = e.first;
        TypeAnnotation.Position expected = e.second;
        TypeAnnotation actual = findAnnotation(aName, expected, actualAnnos, cf);
        if (actual == null) {
            throw new ComparisionException("Expected annotation not found: " + aName + " position: " + expected,
                expectedAnnos,
                actualAnnos);
        }
    }
    return true;
}
 
开发者ID:reprogrammer,项目名称:checker-framework,代码行数:21,代码来源:ReferenceInfoUtil.java

示例10: expectedOf

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
private List<Pair<String, TypeAnnotation.Position>> expectedOf(Method m) {
    TADescription ta = m.getAnnotation(TADescription.class);
    TADescriptions tas = m.getAnnotation(TADescriptions.class);

    if (ta == null && tas == null)
        return null;

    List<Pair<String, TypeAnnotation.Position>> result =
            new ArrayList<>();

    if (ta != null)
        result.add(expectedOf(ta));

    if (tas != null) {
        for (TADescription a : tas.value()) {
            result.add(expectedOf(a));
        }
    }

    return result;
}
 
开发者ID:reprogrammer,项目名称:checker-framework,代码行数:22,代码来源:Driver.java

示例11: parseTypeAnnotations

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
private void parseTypeAnnotations(TypeAnnotation pa, Element p) {
    Element pta = new Element("RuntimeVisibleTypeAnnotation");
    p.add(pta);
    Position pos = pa.position;
    parsePosition(pos, pta);
    parseAnnotation(pa.annotation, pta);
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:8,代码来源:ClassReader.java

示例12: visitRuntimeVisibleTypeAnnotations

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
@Override
public Element visitRuntimeVisibleTypeAnnotations(RuntimeVisibleTypeAnnotations_attribute rvta, Element p) {
    Element e = new Element(x.getCpString(rvta.attribute_name_index));
    for (TypeAnnotation pa : rvta.annotations) {
        parseTypeAnnotations(pa, e);
    }
    e.sort();
    p.add(e);
    return null;
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:11,代码来源:ClassReader.java

示例13: visitRuntimeInvisibleTypeAnnotations

import com.sun.tools.classfile.TypeAnnotation; //导入依赖的package包/类
@Override
public Element visitRuntimeInvisibleTypeAnnotations(RuntimeInvisibleTypeAnnotations_attribute rita, Element p) {
    Element e = new Element(x.getCpString(rita.attribute_name_index));
    for (TypeAnnotation pa : rita.annotations) {
        parseTypeAnnotations(pa, e);
    }
    e.sort();
    p.add(e);
    return null;
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:11,代码来源:ClassReader.java


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