![](/img/trans.png)
[英]how can i remove duplicates from a MD array in one java class, using a method from another class
[英]How can I remove a method from the class definition on the fly?
首先讓我說這純粹是一種滿足我好奇心的練習。 這並不意味着在任何類型的生產環境中使用。
我想知道的是,通過刪除/添加方法到其定義,是否可以通過任何方式重新定義類。
例如,給定此類:
public class PersonBuilder {
private String name;
private int age;
public PersonBuilder name(String name) {
this.name = name;
System.out.println("Name defined");
return this;
}
public PersonBuilder age(int age) {
this.age = age;
System.out.println("Age defined");
return this;
}
}
我想要的是在調用后從類定義中完全刪除name
。 如果我調用age
則期望等效行為。 基本上,無論調用哪種方法都會被刪除。
我知道這需要一定程度的字節碼操作,我相當肯定它不能通過反射來實現。
無論如何,我正在尋找關於如何發展這種行為的一些指導。 任何提示都會非常有幫助。
問題是即使你找到了一種方法來做你想要的(當然可能)調用那些方法的代碼已經編譯完成了。 這意味着只有當第二次調用方法時,實際結果才會是NoMethodDefFound
異常。
所以我的解決方案是為方法創建計數器,並在每次調用此方法時檢查它。 第二次打電話時拋出異常。
當然,這不適用於反思。
也許你可以使用一些在調用方法時拋出異常的包裝器或代理。
或Method.setAccessible(false);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.