例えば java.reflect.Method#invoke に与えるパラメータ型リストは
Classの配列だけど、効率を度外視してもっと意味的に整った設計は、
「Type」「IntType」「BooleanType」とかの名前のインターフェイスが
別にあって、「ReferenceType」の場合だけ参照先のクラスをとれる、
という形だと思う。

つまり、
int.type : IntType (subclassof PrimitiveType)
String.type : StringReferenceType (subclassof ReferenceType)
String.type.getReferedClass () == String.class
とか。あるいは、
class String implements ReferenceType
とかでもいいけど