簡體   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