kanizaのブログ

コンピュータ、ソフトウェア、映画、音楽関連や家族のことなど、思いついたことを書きます。

同じ名前のクラスがいっぱい

JDK 6が出て数ヶ月、最初のアップデートリリースがあった。僕はまだJDK 5で暮らしているけれど。

本格的な利用に備えてJDK 6のドキュメントをあちこち眺めている。ライブラリはどんどんクラスが増えて、同じ名前(短縮名)のやつも多くなってきましたな。どんくらいあるのかちょっと気になったので集計してみた。3個以上あるやつは次のとおり。

  • 3個
    • AttributeList
    • Attributes
    • Binding
    • Certificate
    • Current
    • CurrentHelper
    • CurrentOperations
    • Delegate
    • InputStream
    • InvalidName
    • MarshalException
    • Name
    • OutputStream
    • Policy
    • Provider
    • Reference
    • Timer
    • TypeMismatch
  • 4個
    • Attribute
  • 5個
    • Element

というわけで最多はElementの5個。Attributeも4個と大健闘。たしかにどっちもよく使われそうな抽象的な名前だ。

Elementの5個の内訳は次のとおり。

  • javax.lang.model.element.Element
  • javax.swing.text.Element
  • javax.swing.text.html.parser.Element
  • javax.xml.bind.Element
  • org.w3c.dom.Element

「クラス」と書いたけど、実際はうち4つがインタフェースで、クラスなのはjavax.swing.text.html.parser.Elementだけ。これも抽象度が高い名前ならではという感じがする。Eclipseの補完とか使うとき、間違えてimportしないようにしないとね。以前、java.awt.Listとjava.util.Listが同じ名前なのにはけっこう困った。java.awt.Listを使うことはまずないから補完候補から除外してしまった。

ちなみに最初の集計では、APIドキュメントの「すべてのクラス」をテキストファイル(classes.txt)にコピー&ペーストして、コマンドラインから「uniq -c classes.txt | sort」で結果を出した。こういうコマンド使わない場合はどうやって数えるのが一般的なのかな。Excelを使うんだろうか。