Estou precisando extraer os atributos de um objeto (presumo que não conheço os atributos desse objeto). Tem algo parecido com o Object.keys(obj) de JavaScript??
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Estou precisando extraer os atributos de um objeto (presumo que não conheço os atributos desse objeto). Tem algo parecido com o Object.keys(obj) de JavaScript??
Oii, tudo bem?
Em Java, não há uma função nativa como o Object.keys() do JavaScript para extrair os atributos de um objeto. Mas, você pode obter os campos de uma classe usando reflection.
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
// Criar um objeto de exemplo
ExemploObjeto obj = new ExemploObjeto();
// Obter os campos do objeto
List<String> campos = obterCampos(obj);
// Imprimir os campos
for (String campo : campos) {
System.out.println(campo);
}
}
public static List<String> obterCampos(Object obj) {
List<String> campos = new ArrayList<>();
// Obter a classe do objeto
Class<?> classe = obj.getClass();
// Obter todos os campos declarados na classe, incluindo campos privados
Field[] declaredFields = classe.getDeclaredFields();
// Adicionar o nome de cada campo à lista
for (Field field : declaredFields) {
campos.add(field.getName());
}
return campos;
}
}
class ExemploObjeto {
private int atributo1;
public String atributo2;
protected double atributo3;
}
Assim, a classe Main cria um objeto ExemploObjeto e, em seguida, chama o método obterCampos() para obter uma lista dos campos desse objeto usando reflection. Note que esta abordagem pode não retornar os campos na ordem esperada, como o Object.keys() em JavaScript.
Espero ter te ajudado.
Um abraço e bons estudos.