本文整理汇总了Java中com.sun.org.apache.bcel.internal.classfile.JavaClass.getMethods方法的典型用法代码示例。如果您正苦于以下问题:Java JavaClass.getMethods方法的具体用法?Java JavaClass.getMethods怎么用?Java JavaClass.getMethods使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.sun.org.apache.bcel.internal.classfile.JavaClass
的用法示例。
在下文中一共展示了JavaClass.getMethods方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: ClassGen
import com.sun.org.apache.bcel.internal.classfile.JavaClass; //导入方法依赖的package包/类
/**
* Initialize with existing class.
*
* @param clazz JavaClass object (e.g. read from file)
*/
public ClassGen(final JavaClass clazz) {
super(clazz.getAccessFlags());
class_name_index = clazz.getClassNameIndex();
superclass_name_index = clazz.getSuperclassNameIndex();
class_name = clazz.getClassName();
super_class_name = clazz.getSuperclassName();
file_name = clazz.getSourceFileName();
cp = new ConstantPoolGen(clazz.getConstantPool());
major = clazz.getMajor();
minor = clazz.getMinor();
final Attribute[] attributes = clazz.getAttributes();
// J5TODO: Could make unpacking lazy, done on first reference
final AnnotationEntryGen[] annotations = unpackAnnotations(attributes);
final Method[] methods = clazz.getMethods();
final Field[] fields = clazz.getFields();
final String[] interfaces = clazz.getInterfaceNames();
for (final String interface1 : interfaces) {
addInterface(interface1);
}
for (final Attribute attribute : attributes) {
if (!(attribute instanceof Annotations)) {
addAttribute(attribute);
}
}
for (final AnnotationEntryGen annotation : annotations) {
addAnnotationEntry(annotation);
}
for (final Method method : methods) {
addMethod(method);
}
for (final Field field : fields) {
addField(field);
}
}
示例2: Class2HTML
import com.sun.org.apache.bcel.internal.classfile.JavaClass; //导入方法依赖的package包/类
/**
* Write contents of the given JavaClass into HTML files.
*
* @param java_class The class to write
* @param dir The directory to put the files in
*/
public Class2HTML(final JavaClass java_class, final String dir) throws IOException {
final Method[] methods = java_class.getMethods();
this.java_class = java_class;
this.dir = dir;
class_name = java_class.getClassName(); // Remember full name
constant_pool = java_class.getConstantPool();
// Get package name by tacking off everything after the last `.'
final int index = class_name.lastIndexOf('.');
if (index > -1) {
class_package = class_name.substring(0, index);
} else {
class_package = ""; // default package
}
final ConstantHTML constant_html = new ConstantHTML(dir, class_name, class_package, methods,
constant_pool);
/* Attributes can't be written in one step, so we just open a file
* which will be written consequently.
*/
final AttributeHTML attribute_html = new AttributeHTML(dir, class_name, constant_pool,
constant_html);
new MethodHTML(dir, class_name, methods, java_class.getFields(),
constant_html, attribute_html);
// Write main file (with frames, yuk)
writeMainHTML(attribute_html);
new CodeHTML(dir, class_name, methods, constant_pool, constant_html);
attribute_html.close();
}
示例3: test
import com.sun.org.apache.bcel.internal.classfile.JavaClass; //导入方法依赖的package包/类
@Test
public void test() throws Exception {
String classfile = getClass().getResource("Bug8003147Test.class").getPath();
JavaClass jc = new ClassParser(classfile).parse();
// rename class
ConstantPool cp = jc.getConstantPool();
int cpIndex = ((ConstantClass) cp.getConstant(jc.getClassNameIndex())).getNameIndex();
cp.setConstant(cpIndex, new ConstantUtf8("Bug8003147TestPrime"));
ClassGen gen = new ClassGen(jc);
Method[] methods = jc.getMethods();
int index;
for (index = 0; index < methods.length; index++) {
if (methods[index].getName().equals("doSomething")) {
break;
}
}
Method m = methods[index];
MethodGen mg = new MethodGen(m, gen.getClassName(), gen.getConstantPool());
gen.replaceMethod(m, mg.getMethod());
String path = classfile.replace("Bug8003147Test", "Bug8003147TestPrime");
gen.getJavaClass().dump(new FileOutputStream(path));
try {
Class.forName("Bug8003147TestPrime");
} catch (ClassFormatError cfe) {
cfe.printStackTrace();
Assert.fail("modified version of class does not pass verification");
}
}
示例4: visitJavaClass
import com.sun.org.apache.bcel.internal.classfile.JavaClass; //导入方法依赖的package包/类
@Override
public void visitJavaClass( final JavaClass clazz ) {
String class_name = clazz.getClassName();
final String super_name = clazz.getSuperclassName();
final String package_name = clazz.getPackageName();
final String inter = Utility.printArray(clazz.getInterfaceNames(), false, true);
if (!"".equals(package_name)) {
class_name = class_name.substring(package_name.length() + 1);
_out.println("package " + package_name + ";");
_out.println();
}
_out.println("import " + BASE_PACKAGE + ".generic.*;");
_out.println("import " + BASE_PACKAGE + ".classfile.*;");
_out.println("import " + BASE_PACKAGE + ".*;");
_out.println("import java.io.*;");
_out.println();
_out.println("public class " + class_name + "Creator {");
_out.println(" private InstructionFactory _factory;");
_out.println(" private ConstantPoolGen _cp;");
_out.println(" private ClassGen _cg;");
_out.println();
_out.println(" public " + class_name + "Creator() {");
_out.println(" _cg = new ClassGen(\""
+ (("".equals(package_name)) ? class_name : package_name + "." + class_name)
+ "\", \"" + super_name + "\", " + "\"" + clazz.getSourceFileName() + "\", "
+ printFlags(clazz.getAccessFlags(), FLAGS.CLASS) + ", "
+ "new String[] { " + inter + " });");
_out.println();
_out.println(" _cp = _cg.getConstantPool();");
_out.println(" _factory = new InstructionFactory(_cg, _cp);");
_out.println(" }");
_out.println();
printCreate();
final Field[] fields = clazz.getFields();
if (fields.length > 0) {
_out.println(" private void createFields() {");
_out.println(" FieldGen field;");
for (final Field field : fields) {
field.accept(this);
}
_out.println(" }");
_out.println();
}
final Method[] methods = clazz.getMethods();
for (int i = 0; i < methods.length; i++) {
_out.println(" private void createMethod_" + i + "() {");
methods[i].accept(this);
_out.println(" }");
_out.println();
}
printMain();
_out.println("}");
}