Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Class - getFields()

Olá minha dúvida é a seguinte, ao fazermos:

public class Curso {
    String nome;
    String Data;
    String tipo;
    String qualquerCoisa;
}

Não estamos declarando implicitamente estes atributos como public? Por que então ao fazer:

Curso curso = new Curso();
Class<?> classe = curso.getClass();
System.out.println(classe.getFields().length);

Este retorna 0, e ao mudar a classe Curso para:

public class Curso {
    public String nome;
    public int aluno;
    public String Data;
    public String tipo;
    public String qualquerCoisa;
}

Retorna 5, como o esperado?

2 respostas
solução!

Olá

O método getFields() retorna apenas atributos com visibilidade public, e seus atributos estão como private-package. Utilize o método getDeclaredFields() para acessar todos os atributos independente do modificador de acesso(obs : este método não recupera atributos providos por herança).

Para maiores esclarecimentos : https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html

Obrigado