/ / O que getClass () retorna como referência? [duplicado] - java

O que getClass () retorna como referência? [duplicado] - java

Eu procurei no fórum e entendo getClass() retorna uma referência mas que é uma referência especial e que toda chamada para getClass retorna exatamente a mesma referência para uma determinada classe. Isso significa que podemos usar "==" em vez de "iguais" para compará-los.

Quero saber como essa referência especial é criada e retornada todas as vezes e como sempre é a mesma.

Respostas:

1 para resposta № 1

o Class O objeto para cada classe é um singleton. Isso significa que está escrito de tal maneira que apenas um Class existe um objeto para cada classe.


0 para resposta № 2
  1. O método getClass () retorna a classe de tempo de execução do objeto.
  2. O objeto de classe retornado é o objeto bloqueado por métodos estáticos sincronizados da classe representada.

0 para resposta № 3

A.R., suspeito que você esteja confundindo um Class objeto, com um instância desse objeto de classe. Eles não são os mesmos.

Há apenas um Class objeto para cada tipo Java. getClass retorna uma referência a isso Class objeto. Como existe apenas um objeto, todas as referências a ele são idênticas e == trabalho. O objeto de classe é carregado, pelo ClassLoader a primeira vez que é usado. Ninguém precisa "criar" referências a ele. Ele está lá, na memória, e pode ser referenciado. Como o @JoeC apontou, é um singleton. Bam!

Pode haver muitos instâncias de uma determinada classe. Cada instância independente possui seu próprio estado que não é compartilhado com nenhuma outra instância. Uma das coisas que cada instância tem, como parte de seu estado, é uma referência a sua Class. Essa referência, é claro, é igual à referência em todas as outras instâncias da classe. Eles são ==!

Editado para adicionar: Pode ser útil saber que Class objetos são, eles próprios, instâncias do tipo Class<?>. Pode haver muitos Strings, mas há apenas uma instância de Class<String> e seu tipo (classe) é Class<?>.