Это зависит от того, включена ли отладочная информация при компиляции. Если нет, он отбрасывает имена переменных, и на них просто ссылается их адрес стека. Обычно вы предоставляете компилятору опцию «-g», но если вы используете maven, проверьте документацию, чтобы убедиться, что он включен.
Если включена отладка, вы можете использовать такую библиотеку, как BCEL, чтобы узнать эту информацию:
java.lang.reflect.Method javaMethod = ...; // lookup the actual method using reflection
org.apache.bcel.classfile.JavaClassjc = org.apache.bcel.Repository.lookupClass(classname);
org.apache.bcel.classfile.Method method = jc.getMethod(javaMethod);
org.apache.bcel.classfile.LocalVariableTable lvt = method.getLocalVariableTable();
Оттуда у LocalVariableTable есть множество методов для получения списка локальных переменных (см. Документацию bcel).
Есть несколько пакетов, которые могут это сделать, но BCEL и Javassist приходят мне на ум.