Não há suporte linguístico para fazer o que você está pedindo.
Você pode acessar reflexivamente os membros de um tipo em tempo de execução usando reflexão (por exemplo, com Class.getDeclaredFields()
para obter um array de Field
), mas dependendo do que você está tentando fazer, esta pode não ser a melhor solução.
Veja também
Perguntas relacionadas
Exemplo
Aqui está um exemplo simples para mostrar apenas parte do que a reflexão é capaz de fazer.
import java.lang.reflect.*;
public class DumpFields {
public static void main(String[] args) {
inspect(String.class);
}
static <T> void inspect(Class<T> klazz) {
Field[] fields = klazz.getDeclaredFields();
System.out.printf("%d fields:%n", fields.length);
for (Field field : fields) {
System.out.printf("%s %s %s%n",
Modifier.toString(field.getModifiers()),
field.getType().getSimpleName(),
field.getName()
);
}
}
}
O trecho acima usa reflexão para inspecionar todos os campos declarados de class String
; ele produz a seguinte saída:
7 fields:
private final char[] value
private final int offset
private final int count
private int hash
private static final long serialVersionUID
private static final ObjectStreamField[] serialPersistentFields
public static final Comparator CASE_INSENSITIVE_ORDER
Effective Java 2nd Edition, Item 53: Prefere interfaces para reflexão
Estes são trechos do livro:
Dado um Class
objeto, você pode obter Constructor
, Method
e Field
instâncias que representam os construtores, métodos e campos da classe. [Eles] permitem que você manipule reflexivamente suas contrapartes subjacentes . Esse poder, no entanto, tem um preço:
- Você perde todos os benefícios da verificação em tempo de compilação.
- O código necessário para realizar o acesso reflexivo é desajeitado e prolixo.
- O desempenho sofre.
Como regra, os objetos não devem ser acessados reflexivamente em aplicativos normais em tempo de execução.
Existem alguns aplicativos sofisticados que requerem reflexão. Os exemplos incluem [... omitido propositalmente ...] Se você tiver alguma dúvida se seu aplicativo se enquadra em uma dessas categorias, provavelmente não.