Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在数据库中保存类方法?_Java_Spring_Hibernate_Jpa - Fatal编程技术网

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

Java 如何在数据库中保存类方法?,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,是否可以读取java类的所有方法并将它们的名称保存在数据库中 @Entity public class Action { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; public Action() { } public String methodA() { return "methodA"; } public Stri

是否可以读取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());
}
Method[]methods=Action.class.getDeclaredMethods();
for(int i=0;i
您可以使用
java.lang.Class.getDeclaredMethods()
方法,该方法返回
method
对象数组,包括public、protected、default(package)access和private方法,但不包括继承的方法

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());
}
您将获得以下输出:

方法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());
}

您是否在询问是否可以在数据库中保存Java方法以供将来使用that@medi您是否尝试了我下面的答案?为什么要这样做?Oracle提供了一个关于使用Java反射的有用链接:
ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("class Name");
CtMethod[] methods=cc.getDeclaredMethods();
for(CtMethod method:methods){
 System.out.println(method.toString());
}