「クラスは型である」は間違いである

多くの人が間違える箇所なんだけど、クラスと型は別の概念だ。「元々」と「実態」の両方の意味合いにおいて、ね。
正しく言い直すならば【クラス名は型を指す識別子として使用可能である】となる。クラスではなく型であるような識別子は java にはあるし、実際に型として扱えるのはクラスではなくクラス名だ。

言語仕様にどう書いてあるのかは知らない。

追記

もし仮にStringクラスが型だった場合、内部にcharの配列が入っているStringを引数として渡される事をどうやって保証すれば良いのか

http://nazakki.blogspot.com/2009/03/blog-post_03.html

『内部にcharの配列が入っているStringクラスまたはそのサブクラスのインスタンス全体を表す集合』に『String型』という名前を付け、それを扱えば良いと思います。そして「そのような集合はStringクラスとは異なるでしょ?」というのが自分の主張でした。
というか、Java における『型』とは何か、が一番先に来るべき命題でしたね。すみません^^;