DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

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

Enter fullscreen mode Exit fullscreen mode

Exemplo com flag:

javac -parameters Usuario.java

Enter fullscreen mode Exit fullscreen mode

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);

Enter fullscreen mode Exit fullscreen mode

Vantagens da nova abordagem:

  • Evita dependências externas.
  • Facilita o uso de reflection de forma mais limpa e segura.

🛠️ Como compilar com a flag -parameters:
No terminal, use:

javac -parameters Usuario.java ReflectionTeste.java

Enter fullscreen mode Exit fullscreen mode

E depois execute:

java ReflectionTeste

Enter fullscreen mode Exit fullscreen mode

🧾 Saída esperada (com -parameters):

true: nome
true: pontos

Enter fullscreen mode Exit fullscreen mode

🔁 Saída sem a flag -parameters:

false: arg0
false: arg1

Enter fullscreen mode Exit fullscreen mode

💡 Importante: Para que os nomes reais dos parâmetros apareçam (nome, pontos), compile com a flag -parameters.

Image description
Rodar REBUILD PROJECT

ReflectionComParametro.java

Top comments (0)