12.5 Reflection: parameter names
Nova funcionalidade: Agora é possível recuperar os nomes dos parâmetros de métodos e construtores usando reflection. Como fazer: Use o método getConstructor(...) para obter o construtor desejado. Em seguida, chame getParameters() para obter um array de Parameter. Use getName() para acessar o nome de cada parâmetro. Importante! Por padrão, os nomes exibidos serão genéricos (arg0, arg1). Para ver os nomes reais, é necessário compilar o código com a flag: -parameters Exemplo com flag: javac -parameters Usuario.java Sem essa flag: isNamePresent() retornará false. Os nomes continuarão como arg0, arg1, etc. Antes do Java 8: Era possível recuperar nomes com -g (debug), mas exigia manipulação de bytecode. Dependia de bibliotecas externas, como o Paranamer: Paranamer paranamer = new CachingParanamer(); String[] parameterNames = paranamer.lookupParameterNames(constructor); Vantagens da nova abordagem: Evita dependências externas. Facilita o uso de reflection de forma mais limpa e segura.

Nova funcionalidade: Agora é possível recuperar os nomes dos parâmetros de métodos e construtores usando reflection.
Como fazer:
- Use o método getConstructor(...) para obter o construtor desejado.
- Em seguida, chame getParameters() para obter um array de Parameter.
- Use getName() para acessar o nome de cada parâmetro.
Importante!
- Por padrão, os nomes exibidos serão genéricos (arg0, arg1).
- Para ver os nomes reais, é necessário compilar o código com a flag:
-parameters
Exemplo com flag:
javac -parameters Usuario.java
Sem essa flag:
isNamePresent() retornará false.
Os nomes continuarão como arg0, arg1, etc.
Antes do Java 8:
Era possível recuperar nomes com -g (debug), mas exigia manipulação de bytecode.
Dependia de bibliotecas externas, como o Paranamer:
Paranamer paranamer = new CachingParanamer();
String[] parameterNames = paranamer.lookupParameterNames(constructor);
Vantagens da nova abordagem:
- Evita dependências externas.
- Facilita o uso de reflection de forma mais limpa e segura.