2

私たちのフレームワークでは、パブリック API にこのメソッドとのインターフェースがあります。

JaxbConfiguration newJaxbConfiguration(Options xjcOpts);

実装では、次のようにします。

import com.sun.tools.xjc.ModelLoader;
import com.sun.tools.xjc.Options;
import com.sun.tools.xjc.model.Model;
...

public JaxbConfiguration newJaxbConfiguration(Options xjcOpts) {
    Model model = ModelLoader.load(xjcOpts, ...);
    ...
}

ただし、OSGi と Java 9 のジグソーはどちらもcom.sun.tools.xjc.Options、私たちの実装ではなく、特にパブリック API インターフェイスで を使用することを好みません。

どうすればそれを取り除くことができますか?

4

1 に答える 1

2

JDepsのWeb サイトには、いくつかの JDK 内部 API と、それらの使用法を置き換える推奨方法がリストされています。ただし、ModelLoader.load() の使用については言及されていません。私の推測では、このユースケースは JDeps チームの注目を集めるほどにはなっていません。

私の推奨事項は、このメソッドをリファクタリングして、

  1. Options 引数を渡す代わりに、Options 引数を作成するために使用しているデータを渡します。
  2. 内部モデルから変換する代わりに、そのデータを使用して JaxbConfiguration オブジェクトを構築します。

JaxbConfiguration が何であるか、またはそれがどのライブラリからのものであるかについて言及していないため、それを構築する方法を正確に言うのは難しいです。とにかく、この回答は、内部 API の使用を削除する方法に関するものです。JaxbConfiguration を構築する方法は、おそらく別の問題です。

于 2016-07-15T13:17:44.777 に答える