Quando o programa Java está em execução, o sistema Java sempre realizou a identificação do tipo de tempo de execução de todos os objetos, o RTTI chamado. Esta informação registra a classe de cada objeto. A máquina virtual geralmente usa o método correto de executar as informações de tipo a ser executado. A classe de classe encapsula o estado de um objeto e interface.
O resumo simples é o seguinte:
A classe de classe também é uma classe, mas o nome é semelhante ao da palavra -chave da classe. Java é uma linguagem sensível.
O conteúdo da classe é o tipo de informação da classe que você criou.
Os objetos da classe Classe não podem ser criados de maneira nova () como uma classe comum.
O papel da classe é fornecer ou obter uma informação de tipo que forneça ou obtenha um determinado objeto durante o tempo de execução, que é semelhante à função typeId () em C ++. Esta informação também pode ser usada para reflexão.
1. Princípio da classe da classe
Todos sabemos que todas as classes Java herdam a classe de objeto. Classe de aula. Não podemos gerar um objeto de classe (o construtor é privado), e o objeto desta classe é criar automaticamente o objeto de classe pela máquina virtual Java quando é transferida, ou é gerado pelo método DefinClass no carregador. Os objetos que geramos terão um campo para registrar a localização do objeto do objeto na classe de classe do objeto. Como mostrado na figura abaixo:
2. Obtenha um objeto de classe
O primeiro método é a função forname da classe
[classe Codec Shapes {}
Classe obj = classe.ForName ("Shapes");
O segundo método é usar o objeto do objeto do objeto
Copiar código do código da seguinte forma: classe Shapes {}
formas S1 = new Shapes ();
Classe obj = s1.getclass ();
Classe obj1 = s1.getsuperclass ();
O terceiro método é usar o tipo de tipo constante
Copie o código do código da seguinte forma: obj = string.class;
Classe obj1 = int.class;
Observe que, ao usar esse método para gerar o objeto de classe, a JVM não carregará automaticamente a classe (como a string). Outros métodos farão com que a JVM inicialize esta classe.
3. Use o objeto da classe para gerar uma instância da classe de destino
Instância imprecisa do objeto
Depois de obter um objeto da classe, você pode usar a função NewInstance () para gerar uma instância da classe de destino. No entanto, essa função não gera diretamente instâncias da classe de destino e só pode gerar instâncias da classe de objeto
Copie o código do seguinte: obj = classe.ForName ("Shapes");
Objeto shapesInsinStance = obj.newInstance ();
Use a classe de generalização para fazer referência à instância de destino do tipo de correia do tipo
Código de cópia do seguinte: Shapes> obj = shapes.class;
formas newshape = obj.newInstance ();
Devido ao limite de tipo, a referência do objeto à sintaxe da classe de generalização não pode ser direcionada para outras categorias.
Código de cópia do seguinte: classe obj1 = int.class;
Classe <Teger> obj2 = int.class;
obj1 = duplo.class;
//Obj2=double.class;
No entanto, existe um uso flexível que permite apontar para qualquer subclasse da classe base com objetos de classe.
Copie o código do seguinte: Classe <?
obj = número.class;
obj = duplo.class;
Portanto, o objeto de classe gerado abaixo pode apontar para qualquer classe.
Cópia do código da seguinte forma: classe <?> Obj = int.class;
obj = duplo.class;
obj = shapes.class;
O último uso estranho é que, quando você usa essa sintaxe genérica para construir um objeto de classe base de um objeto de uma classe que você tem em mãos, você deve usar a seguinte gramática especial
Copiar código do código da seguinte forma: a classe pública Shapes {}
Classe Round estende formas {}
Classe <nd> rclass = redond.class;
Classe <?
// classe <Shapes> sclass = rclass.getSuperclass ();
Sabemos que a classe base de rodada são formas, mas não pode declarar diretamente a classe <shapes> e deve usar uma gramática especial
Classe <?
O exposto acima é todo o conteúdo deste artigo.