オブジェクトは Java クラスの上にあります。String は Object のサブクラスです。
では、オブジェクトと文字列のどちらが最初だったのでしょうか?
即答は - オブジェクトです。
しかし、興味深いことに、Object には既にメソッド toString() があり、したがって String について「認識」しています。そのため、Object が構築されるとき、String はすでに存在している必要があります。一方、String は Object のサブクラスであり、String が構築されるとき、Object は既に存在している必要があります。私たちは終わりのない定義サイクルに陥ります (そして技術的な問題もあります)。このようなアプローチは、少なくとも単一のルート クラスの考え方に反します。
懸念事項は、実用的というよりはむしろ理論的なものに見えるかもしれません。
しかし、問題は、他のフレームワークでも同様のアプローチが見られることです。少なくともある程度は、コア Java クラスの設計方法に触発されたと思います。
Java クラス間の循環依存関係は一般的に (特にオブジェクト/文字列の場合) 避けられないと思いますか? 何としても避けるべきではないでしょうか。それとも、合理的な妥協の結果として、(慎重に慎重に) 受け入れることができるでしょうか? もしそうなら、基準は何ですか?