¿Por qué son las clases no símbolos definidos en Java, excepto cuando accede a las propiedades en ellos?

Curtis Parfitt-Ford:

Considere el ejemplo más simple posible. Tenemos

public class Foo {}

Por lo tanto podemos decir

Foo.class // ==> class Foo

Por lo tanto, es lógico que Foodebe ser una java.lang.Class, ya que tenemos claramente el acceso a la misma y podemos manipularlo en el contexto actual. Todavía

Foo instanceof java.lang.Class

plantea el error

cannot find symbol
  symbol:    variable Foo
Foo instanceof java.lang.Class
^-^

Esto no es nada que ver con instanceof en sí, sin embargo; sólo

Foo

solo en el shell OpenJDK produce el mismo error.

¿Cómo podemos acceder a las propiedades en Foocaso de Foono existir en el contexto actual?

rgettman:

A nombre de la clase se puede utilizar en el código fuente como parte de muchas expresiones diferentes. Esto no quiere decir que el nombre de la clase en sí es un objeto; sólo significa que el nombre en sí mismo puede ser utilizado como parte de una expresión más grande. Estos no son "propiedades" o atributos; que son otras construcciones sintácticas utilizadas para formar expresiones con muchas partes diferentes.

Los JLS define cómo un "TypeName", por ejemplo, Foose puede utilizar para expresiones forma en el capítulo 15. Específicamente:

También puede ser un derecho "tipo de referencia" para otras expresiones, tales como:

Hay usos específicos de un ejemplo nombre del tipo Fooque se ha descrito anteriormente. Esto no implica que el nombre del tipo se puede utilizar en general como su propio objeto. Los nombres de tipo sólo se permiten como parte de las expresiones más grandes que pueden ser de otro modo no relacionado.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=330164&siteId=1
Recomendado
Clasificación