Para que serve o .class?

Para que serve o .class do java?

Quando criamos uma classe, ao usar algum método aparece um .class para ser usado, o que ele retorna? O que quer dizer?

Exemplo: ObjetoExemplo.class;

É o seu .java compilado em bytecode pra rodar na java virtual machine

1 curtida

É exatamente o que o @peczenyj disse.

Para exemplificar, crie uma classe chama MinhaClasse.java. Inclua esse código nela:

class MinhaClasse {
    public static void main(String[] args) {
        System.out.println("Olá Mundo!");
    }
}

Pelo cmd do Windows, navegue até a pasta em que esse arquivo está.
Escreva javac MinhaClasse.java
javac significa Java Compiler
Ao fazer isso você verá que o arquivo .class aparecerá no mesmo diretório da sua classe.
Para executar o seu código java, você deve chamar esse .class, que é o que a JVM entende de fato.
Para executar digite o comando java MinhaClasse
Não é necessário o .class no final.
Você verá “Olá Mundo” no console do cmd.

Em outras palavras, para executar algum código em java, é necessário que esse seja compilado.

Isso é transparente quando utilizamos IDE e o funcionamento real pode acabar passando despercebido.

Espero ter ajudado.

Abs.

eu omiti varios detalhes

por exemplo um arquivo .java pode der uma unica classe publica mas pode ter varias classes ( não publicas ). vc ainda pode ter classes anonimas e inner/static classes.

cada classe, interface ou enumeração vai ser convertida em um .class pelo processo de compilação

alias é interessante usar o aplicativo javap no .class pra ver a estrutura interna.

e o que é um jar? um zip com os seus .class ( basicamente )

Pessoal, vocês não entenderam minha pergunta. Eu não estou me referindo ao arquivo, mas sim ao código.

Exemplo:
'
public class Teste{

 public static void main(String[] args){
         // aqui vou usar de alguma forma a MinhaClasse chamando com um .class.
        // MinhaClasse.class;  <<--- O QUE ISSO FAZ?
 }

}`

Outro exemplo:

`pf.setTipoDocumento(Enum.valueOf(TipoDocumento.class, “CPF”));

// O QUE ESSE TipoDocumento.class FAZ?O QUE RETORNA?`

Vamos la

Uma classe pode possuir atributos. São os atributos static

Cada classe java possui um atributo class

Isso retorna um objeto do tipo Class

É um objeto que representa a própria classe.

Mas isso não seria o this?

Quando eu vou referenciar a classe dentro dela própria eu uso o this, quando quero usar a própria classe “fora dela” eu uso o .class? Ficou confuso…

this pode ser uma referencia ao construtor ou a própria instância.

Instância != Classe

vamos ao seu exemplo

Enum.valueOf(TipoDocumento.class, “CPF”)

Se TipoDocumento for uma enumeração ( enum ) então isso é uma forma de pegar o valor CPF a partir da string “CPF” - por que estão fazendo isso? não imagino. sera que gostam de sofrer?

https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html