開発中のオープンソース プロジェクトへの反映を避けたい。ここでは、次のようなクラスがあります。
public class PurchaseOrder {
@Property
private Customer customer;
@Property
private String name;
}
注釈をスキャンして@Property
、PurchaseOrder から反射的に設定および取得できるものを判断します。とをすべて使用するそのようなクラスが多数ありjava.lang.reflect.Field.get()
ますjava.lang.reflect.Field.set()
。
理想的には、プロパティごとに次のような呼び出し元を生成したいと思います。
public interface PropertyAccessor<S, V> {
public void set(S source, V value);
public V get(S source);
}
PurchaseOrder
クラスをスキャンすると、そのような静的内部クラスを作成できます。
static class customer_Field implements PropertyAccessor<PurchaseOrder, Customer> {
public void set(PurchaseOrder order, Customer customer) {
order.customer = customer;
}
public Customer get(PurchaseOrder order) {
return order.customer;
}
}
これらを使用すると、反射のコストを完全に回避できます。ネイティブ パフォーマンスでインスタンスを設定および取得できるようになりました。誰かが私にこれを行う方法を教えてもらえますか。コード例は素晴らしいでしょう。良い例をネットで検索しましたが、このようなものは見つかりません。ASM と Javasist の例もかなり貧弱です。
ここで重要なのは、渡すことができるインターフェイスがあることです。したがって、Java リフレクションをデフォルトとして使用するもの、ASM を使用するもの、Javassist を使用するものなど、さまざまな実装を使用できますか?
どんな助けでも大歓迎です。