[英]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.