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


Java Opcodes.ACC_INTERFACE属性代码示例

本文整理汇总了Java中scouter.org.objectweb.asm.Opcodes.ACC_INTERFACE属性的典型用法代码示例。如果您正苦于以下问题:Java Opcodes.ACC_INTERFACE属性的具体用法?Java Opcodes.ACC_INTERFACE怎么用?Java Opcodes.ACC_INTERFACE使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在scouter.org.objectweb.asm.Opcodes的用法示例。


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

示例1: visit

@Override
public void visit(final int version, final int access, final String name,
        final String signature, final String superName,
        final String[] interfaces) {
    computeSVUID = (access & Opcodes.ACC_INTERFACE) == 0;

    if (computeSVUID) {
        this.name = name;
        this.access = access;
        this.interfaces = new String[interfaces.length];
        System.arraycopy(interfaces, 0, this.interfaces, 0,
                interfaces.length);
    }

    super.visit(version, access, name, signature, superName, interfaces);
}
 
开发者ID:scouter-project,项目名称:bytescope,代码行数:16,代码来源:SerialVersionUIDAdder.java

示例2: verify

/**
 * Checks a given class.
 * 
 * @param cr
 *            a <code>ClassReader</code> that contains bytecode for the
 *            analysis.
 * @param loader
 *            a <code>ClassLoader</code> which will be used to load
 *            referenced classes. This is useful if you are verifiying
 *            multiple interdependent classes.
 * @param dump
 *            true if bytecode should be printed out not only when errors
 *            are found.
 * @param pw
 *            write where results going to be printed
 */
public static void verify(final ClassReader cr, final ClassLoader loader,
        final boolean dump, final PrintWriter pw) {
    ClassNode cn = new ClassNode();
    cr.accept(new CheckClassAdapter(cn, false), ClassReader.SKIP_DEBUG);

    Type syperType = cn.superName == null ? null : Type
            .getObjectType(cn.superName);
    List<MethodNode> methods = cn.methods;

    List<Type> interfaces = new ArrayList<Type>();
    for (Iterator<String> i = cn.interfaces.iterator(); i.hasNext();) {
        interfaces.add(Type.getObjectType(i.next()));
    }

    for (int i = 0; i < methods.size(); ++i) {
        MethodNode method = methods.get(i);
        SimpleVerifier verifier = new SimpleVerifier(
                Type.getObjectType(cn.name), syperType, interfaces,
                (cn.access & Opcodes.ACC_INTERFACE) != 0);
        Analyzer<BasicValue> a = new Analyzer<BasicValue>(verifier);
        if (loader != null) {
            verifier.setClassLoader(loader);
        }
        try {
            a.analyze(cn.name, method);
            if (!dump) {
                continue;
            }
        } catch (Exception e) {
            e.printStackTrace(pw);
        }
        printAnalyzerResult(method, a, pw);
    }
    pw.flush();
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:51,代码来源:CheckClassAdapter.java

示例3: visit

@Override
public void visit(final int version, final int access, final String name,
        final String signature, final String superName,
        final String[] interfaces) {
    super.visit(Opcodes.V1_2, access, name, null, superName, interfaces);
    int index = name.lastIndexOf('/');
    if (index > 0) {
        pkgName = name.substring(0, index);
    } else {
        pkgName = "";
    }
    clsName = name;
    isInterface = (access & Opcodes.ACC_INTERFACE) != 0;
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:14,代码来源:ClassOptimizer.java

示例4: TraceSignatureVisitor

public TraceSignatureVisitor(final int access) {
    super(Opcodes.ASM5);
    isInterface = (access & Opcodes.ACC_INTERFACE) != 0;
    this.declaration = new StringBuffer();
}
 
开发者ID:scouter-project,项目名称:bytescope,代码行数:5,代码来源:TraceSignatureVisitor.java

示例5: getCommonSuperClass

protected String getCommonSuperClass(final String type1, final String type2) {
	try {
		ClassReader info1 = typeInfo(type1);
		ClassReader info2 = typeInfo(type2);

		if (info1 == null || info2 == null)
			return "java/lang/Object";

		if ((info1.getAccess() & Opcodes.ACC_INTERFACE) != 0) {
			if (typeImplements(type2, info2, type1)) {
				return type1;
			}
			if ((info2.getAccess() & Opcodes.ACC_INTERFACE) != 0) {
				if (typeImplements(type1, info1, type2)) {
					return type2;
				}
			}
			return "java/lang/Object";
		}
		if ((info2.getAccess() & Opcodes.ACC_INTERFACE) != 0) {
			if (typeImplements(type1, info1, type2)) {
				return type2;
			} else {
				return "java/lang/Object";
			}
		}
		StringBuffer b1 = typeAncestors(type1, info1);
		StringBuffer b2 = typeAncestors(type2, info2);
		String result = "java/lang/Object";
		int end1 = b1.length();
		int end2 = b2.length();
		while (true) {
			int start1 = b1.lastIndexOf(";", end1 - 1);
			int start2 = b2.lastIndexOf(";", end2 - 1);
			if (start1 != -1 && start2 != -1
					&& end1 - start1 == end2 - start2) {
				String p1 = b1.substring(start1 + 1, end1);
				String p2 = b2.substring(start2 + 1, end2);
				if (p1.equals(p2)) {
					result = p1;
					end1 = start1;
					end2 = start2;
				} else {
					return result;
				}
			} else {
				return result;
			}
		}
	} catch (IOException e) {
		e.printStackTrace();
	}
	return "java/lang/Object";
}
 
开发者ID:scouter-project,项目名称:bytescope,代码行数:54,代码来源:ScouterClassWriter.java

示例6: appendAccess

static void appendAccess(final int access, final StringBuilder sb) {
    if ((access & Opcodes.ACC_PUBLIC) != 0) {
        sb.append("public ");
    }
    if ((access & Opcodes.ACC_PRIVATE) != 0) {
        sb.append("private ");
    }
    if ((access & Opcodes.ACC_PROTECTED) != 0) {
        sb.append("protected ");
    }
    if ((access & Opcodes.ACC_FINAL) != 0) {
        sb.append("final ");
    }
    if ((access & Opcodes.ACC_STATIC) != 0) {
        sb.append("static ");
    }
    if ((access & Opcodes.ACC_SUPER) != 0) {
        if ((access & ACCESS_CLASS) == 0) {
            sb.append("synchronized ");
        } else {
            sb.append("super ");
        }
    }
    if ((access & Opcodes.ACC_VOLATILE) != 0) {
        if ((access & ACCESS_FIELD) == 0) {
            sb.append("bridge ");
        } else {
            sb.append("volatile ");
        }
    }
    if ((access & Opcodes.ACC_TRANSIENT) != 0) {
        if ((access & ACCESS_FIELD) == 0) {
            sb.append("varargs ");
        } else {
            sb.append("transient ");
        }
    }
    if ((access & Opcodes.ACC_NATIVE) != 0) {
        sb.append("native ");
    }
    if ((access & Opcodes.ACC_STRICT) != 0) {
        sb.append("strict ");
    }
    if ((access & Opcodes.ACC_INTERFACE) != 0) {
        sb.append("interface ");
    }
    if ((access & Opcodes.ACC_ABSTRACT) != 0) {
        sb.append("abstract ");
    }
    if ((access & Opcodes.ACC_SYNTHETIC) != 0) {
        sb.append("synthetic ");
    }
    if ((access & Opcodes.ACC_ANNOTATION) != 0) {
        sb.append("annotation ");
    }
    if ((access & Opcodes.ACC_ENUM) != 0) {
        sb.append("enum ");
    }
    if ((access & Opcodes.ACC_DEPRECATED) != 0) {
        sb.append("deprecated ");
    }
    if ((access & Opcodes.ACC_MANDATED) != 0) {
        sb.append("mandated ");
    }
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:65,代码来源:SAXClassAdapter.java

示例7: visitCode

@Override
public final void visitCode() {
    if ((access & (Opcodes.ACC_ABSTRACT | Opcodes.ACC_INTERFACE | Opcodes.ACC_NATIVE)) == 0) {
        sa.addStart("code", new AttributesImpl());
    }
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:6,代码来源:SAXCodeAdapter.java

示例8: visit

@Override
public void visit(final int version, final int access, final String name,
        final String signature, final String superName,
        final String[] interfaces) {
    if (start) {
        throw new IllegalStateException("visit must be called only once");
    }
    start = true;
    checkState();
    checkAccess(access, Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL
            + Opcodes.ACC_SUPER + Opcodes.ACC_INTERFACE
            + Opcodes.ACC_ABSTRACT + Opcodes.ACC_SYNTHETIC
            + Opcodes.ACC_ANNOTATION + Opcodes.ACC_ENUM
            + Opcodes.ACC_DEPRECATED + 0x40000); // ClassWriter.ACC_SYNTHETIC_ATTRIBUTE
    if (name == null || !name.endsWith("package-info")) {
        CheckMethodAdapter.checkInternalName(name, "class name");
    }
    if ("java/lang/Object".equals(name)) {
        if (superName != null) {
            throw new IllegalArgumentException(
                    "The super class name of the Object class must be 'null'");
        }
    } else {
        CheckMethodAdapter.checkInternalName(superName, "super class name");
    }
    if (signature != null) {
        checkClassSignature(signature);
    }
    if ((access & Opcodes.ACC_INTERFACE) != 0) {
        if (!"java/lang/Object".equals(superName)) {
            throw new IllegalArgumentException(
                    "The super class name of interfaces must be 'java/lang/Object'");
        }
    }
    if (interfaces != null) {
        for (int i = 0; i < interfaces.length; ++i) {
            CheckMethodAdapter.checkInternalName(interfaces[i],
                    "interface name at index " + i);
        }
    }
    this.version = version;
    super.visit(version, access, name, signature, superName, interfaces);
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:43,代码来源:CheckClassAdapter.java

示例9: visit

@Override
public void visit(final int version, final int access, final String name,
        final String signature, final String superName,
        final String[] interfaces) {
    this.access = access;
    int major = version & 0xFFFF;
    int minor = version >>> 16;
    buf.setLength(0);
    buf.append("// class version ").append(major).append('.').append(minor)
            .append(" (").append(version).append(")\n");
    if ((access & Opcodes.ACC_DEPRECATED) != 0) {
        buf.append("// DEPRECATED\n");
    }
    buf.append("// access flags 0x")
            .append(Integer.toHexString(access).toUpperCase()).append('\n');

    appendDescriptor(CLASS_SIGNATURE, signature);
    if (signature != null) {
        TraceSignatureVisitor sv = new TraceSignatureVisitor(access);
        SignatureReader r = new SignatureReader(signature);
        r.accept(sv);
        buf.append("// declaration: ").append(name)
                .append(sv.getDeclaration()).append('\n');
    }

    appendAccess(access & ~Opcodes.ACC_SUPER);
    if ((access & Opcodes.ACC_ANNOTATION) != 0) {
        buf.append("@interface ");
    } else if ((access & Opcodes.ACC_INTERFACE) != 0) {
        buf.append("interface ");
    } else if ((access & Opcodes.ACC_ENUM) == 0) {
        buf.append("class ");
    }
    appendDescriptor(INTERNAL_NAME, name);

    if (superName != null && !"java/lang/Object".equals(superName)) {
        buf.append(" extends ");
        appendDescriptor(INTERNAL_NAME, superName);
        buf.append(' ');
    }
    if (interfaces != null && interfaces.length > 0) {
        buf.append(" implements ");
        for (int i = 0; i < interfaces.length; ++i) {
            appendDescriptor(INTERNAL_NAME, interfaces[i]);
            buf.append(' ');
        }
    }
    buf.append(" {\n\n");

    text.add(buf.toString());
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:51,代码来源:Textifier.java

示例10: visitMethod

@Override
public Textifier visitMethod(final int access, final String name,
        final String desc, final String signature, final String[] exceptions) {
    buf.setLength(0);
    buf.append('\n');
    if ((access & Opcodes.ACC_DEPRECATED) != 0) {
        buf.append(tab).append("// DEPRECATED\n");
    }
    buf.append(tab).append("// access flags 0x")
            .append(Integer.toHexString(access).toUpperCase()).append('\n');

    if (signature != null) {
        buf.append(tab);
        appendDescriptor(METHOD_SIGNATURE, signature);

        TraceSignatureVisitor v = new TraceSignatureVisitor(0);
        SignatureReader r = new SignatureReader(signature);
        r.accept(v);
        String genericDecl = v.getDeclaration();
        String genericReturn = v.getReturnType();
        String genericExceptions = v.getExceptions();

        buf.append(tab).append("// declaration: ").append(genericReturn)
                .append(' ').append(name).append(genericDecl);
        if (genericExceptions != null) {
            buf.append(" throws ").append(genericExceptions);
        }
        buf.append('\n');
    }

    buf.append(tab);
    appendAccess(access & ~Opcodes.ACC_VOLATILE);
    if ((access & Opcodes.ACC_NATIVE) != 0) {
        buf.append("native ");
    }
    if ((access & Opcodes.ACC_VARARGS) != 0) {
        buf.append("varargs ");
    }
    if ((access & Opcodes.ACC_BRIDGE) != 0) {
        buf.append("bridge ");
    }
    if ((this.access & Opcodes.ACC_INTERFACE) != 0
            && (access & Opcodes.ACC_ABSTRACT) == 0
            && (access & Opcodes.ACC_STATIC) == 0) {
        buf.append("default ");
    }

    buf.append(name);
    appendDescriptor(METHOD_DESCRIPTOR, desc);
    if (exceptions != null && exceptions.length > 0) {
        buf.append(" throws ");
        for (int i = 0; i < exceptions.length; ++i) {
            appendDescriptor(INTERNAL_NAME, exceptions[i]);
            buf.append(' ');
        }
    }

    buf.append('\n');
    text.add(buf.toString());

    Textifier t = createTextifier();
    text.add(t.getText());
    return t;
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:64,代码来源:Textifier.java

示例11: TraceSignatureVisitor

public TraceSignatureVisitor(final int access) {
    super(Opcodes.ASM5);
    isInterface = (access & Opcodes.ACC_INTERFACE) != 0;
    this.declaration = new StringBuilder();
}
 
开发者ID:scouter-project,项目名称:scouter,代码行数:5,代码来源:TraceSignatureVisitor.java


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