カスタムで閉じるために、インターフェイスPreparedStatementを装飾したいと思います(単なる例です)。
PreparedStatement
これは、 の既存のインスタンスをデコレートして、 が呼び出されているときに他のコードを呼び出したいことを意味しclose()
ます。
そのためには、ここで行われたように、内部オブジェクトへの呼び出しを委任するためだけに、デコレーターの数十のメソッドすべてをデフォルトで実装する必要があります。欠点は、多くの作業とコードに付加価値がほとんどないことです。PreparedStatement
もう 1 つのオプションは、Java のProxy と InvocationHandlerを使用して、単一のメソッドですべてのメソッドのデリゲートを行うデフォルトの実装を提供することです。カスタム メソッドが存在する場合、InvocationHandlerはそのメソッドに呼び出しを送信します。ここで例を参照してください。このソリューションの問題は、カスタム メソッドを as としてマークできず、その署名が正しいかどうかをチェックできないことです。これは、プロキシがインスタンス化できない@Override
abstract が必要になるためです。PreparedStatement
それで、これはできますか?どのように?
* Java 7 max を使用して実装できる必要がありますが、Java 8 の回答を自由に提供してください。