Otimização do código fonte ao descompilar um .class para um .java

Boa tarde!

Estou como seguinte problema:

1 - Compilo um .java utilizando o Eclipse;
2 - Compilo o mesmo código utilizando o javac 1.5;
3 - Ao comparar os arquivos .class com um software de comparação, os .class são diferentes;
4 - Descompilei o dois .class gerando os seus respectivos .java;

Identifiquei que o compilado com o Eclipse, mantém os nomes dos parâmetros dos métodos íntegros, ou seja, o .java gerado é identico ao .java original, enquanto que o .java gerado a partir do .class compilado pelo javac 1.5, altera os nomes dos parêmetros, para um nome com apenas uma letra (Exempla: void metodo(String SalvarConfiguracao) {}-> no código original e no .java descompilado fica desta forma: void metodo(String S) {}.

Alguém sabe porque o Eclipse não faz esta otimização? Será que existe algum parâmetro que devo passar em tempo de compilação para que o compilador javac 1.5 não otimize o código?

Desde já agradeço a ajuda!

WJMagrini

Os nomes dos parâmetros não são salvos no .class, na verdade.

Isso é um defeito, não uma qualidade, e deveria ter sido corrigido faz tempo. (Foi prometido para o Java 5 que os nomes dos parâmetros seriam acessíveis via reflection, mas não entrou nem no 5, nem no 6, nem no 7. )

Se o .class for compilado com informação de “debug” (que é o caso do Eclipse, mas para o javac precisa de um parâmetro a mais - acho que é -g), os nomes dos parâmetros, assim como os nomes das variáveis locais, são salvos como informação de debug.

O “descompilador” tenta ler a informação de debug para obter os nomes dos parâmetros e variáveis locais. Se você usou o javac, essas informações não estão disponíveis.