通过AccessFlags查找方法

时间:2017-12-16 15:06:22

标签: javassist

我想通过标记和其他信息搜索declared methods

例如,我想搜索方法public final void ae(StringTokenizer);

以下是一个示例方法,我想如何搜索它:

private CtMethod findMethod(CtClass clazz, int access, String returns, String[] parameters) throws NotFoundException {

    /*
       returns = null = void, other String for returned class name
       parameters = easy names of parameters
    */
    CtMethod found = null;

    for(CtMethod method : clazz.getDeclaredMethods()) {
      // Check here all flags and informations - If found, set the `found` variable and return
    }

    return found;
 }

以下是一个示例电话:

 CtMethod inputMethod = this.findMethod(theClass, AccessFlag.FINAL, null, new String[] { "StringTokenizer" });

我如何检查显式标志,样本AccessFlag.FINAL | AccessFlag.PUBLIC

1 个答案:

答案 0 :(得分:1)

您可以通过调用CtMethod::getModifiers​来获取修饰符。然后,您可以检查修改器是否已设置:

if (ctMethod.getModifiers() & (AccessFlag.FINAL | AccessFlag.PUBLIC) != 0) {
  found = ctMethod;
  break;
}