2017-12-31 112 views
0

私はScala型からGraphQL定義を生成していますが、ランタイムリフレクションAPIでは "user defined" ScalaまたはJava標準ライブラリの一部ではありません。ランタイムリフレクションを使用して標準ライブラリ(JavaまたはScala)にない基本クラスを決定する

現在のところ、私は知っているもののセットを持っています。 Any,Objectおよび約8個。私はユニットテストを書いていたときに現れたものなので、それらはリストにしかありません。理想的には私はマニュアルリストを望んでいない、新しいタイプが追加されるとそれはおそらく壊れるでしょうが脆いようです。

これはマクロでは可能かどうかわかりませんが、これはオプションではありません。マクロを試したあと、コンパイラがクラッシュするなど、あまりにも多くのバグがありました。最新のzincにあると思われますが、使用できるGradleを使用しているため使用できません。 1.xシリーズの名前空間の変更による0.x.x亜鉛シリーズ。

標準ライブラリからではないタイプのベースクロックを判別する手段があるかどうかは誰にも分かりますか?

答えて

1

このような機能は存在せず、存在する必要があります。特に私は、 "標準ライブラリ"という言葉は実際に問題の文脈で十分に定義されているとは思わない。つまり、標準ライブラリからクラスを除外する必要があるのはなぜですか?あなたが依存している他の一般的なライブラリからは除外しなければなりません。また、標準ライブラリにはかなり複雑なタイプもあります(たとえば、java.text.DateFormatまたはorg.w3c.dom.Document)。はい、おそらく今は公開していないかもしれませんが、これは今のところです。

API契約の一部として公開したいすべての基本クラスおよび/またはパッケージの明示的なホワイトリストを用意し、それをフィルタリングに使用するのが適切な方法だと思います。また、 "標準ライブラリ"を除外するためにブラックリスト(java.*,、scala.*など)を使用してみてください。しばらく時間がかかるかもしれませんが、これは良い考えではないと思います。

関連する問題