繁体   English   中英

如何在数据库中保存类方法?

[英]How to save class method in database?

是否可以读取 java 类的所有方法并将它们的名称保存在数据库中?

@Entity
public class Action {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    public Action() {
    }

    public String methodA() {
        return "methodA";
    }

    public String methodB() {
        return "methodB";
    }
}

使用 Java 反射:

Method[] methods = Action.class.getDeclaredMethods();

for (int i = 0; i < methods.length; i++) {
     saveToDB(methods[i].toString());
}

您可以使用java.lang.Class.getDeclaredMethods()方法,该方法返回Method对象数组,包括公共、受保护、默认(包)访问和私有方法,但不包括继承的方法。

Action  cls = new Action ();
Class c = cls.getClass();
Method[] methods = c.getDeclaredMethods();
for(int i = 0; i < methods.length; i++) {
    System.out.println(methods[i].toString());
}

你的输出将是这样的:

公共 java.lang.String methodA()
public java.lang.String methodB()

如果只想存储方法的名称,可以使用getName()方法。 所以如果你这样做:

for(int i = 0; i < methods.length; i++) {
    System.out.println(methods[i].toString());
}

你得到这个输出:

方法A
方法B

您也可以使用 javassist 在运行时获取所有方法。 即使您不了解类结构。

ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("class Name");
CtMethod[] methods=cc.getDeclaredMethods();
for(CtMethod method:methods){
 System.out.println(method.toString());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM