Это просто не то же самое.String
является классом типа string, а String.member
является одной из его переменных-членов, String.method()
будет одним из его методов.
String.class
является объектом типа Class
, который определяетString
.Кажется, намного более интуитивно понятно, что вам нужно указать .class
, чтобы указать, что вы пытаетесь сослаться на объект типа Class
.
Не говоря уже о том, что легче разобрать этот тип конструкциии потенциально предотвращает ошибки, когда вы случайно возвращаете объект Class
, когда вы этого не хотели.
Это еще более актуально, когда вы смотрите на внутренние классы, такие как OuterClass.InnerClass.class
.
Для работы с примером Мэтта: Как бы вы работали с объектом класса без необходимости сначала создавать временную переменную?Предполагая, что в вашем классе Foo
есть статический метод с именем getClasses
, как бы вы различали Foo.getClasses
и Foo.class.getClasses
?