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??
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.