У аргумента или локальной переменной нет имени, только число.
Я считаю, что аргумент командной строки для добавления имен локальных переменных - -parameters
, чтобы разрешить доступ через отражение https://www.beyondjava.net/reading-java-8-method-parameter-named-reflection
Задача декомпилятора - определить / угадать имя переменной.Я использую Fernflower, который делает разумную работу.
Ввод
import java.util.stream.Stream;
interface IFoo {
public abstract void hello(String what);
public static void print(String... args) {
Stream<String> stream = Stream.of(args);
stream.forEach(System.out::println);
}
}
вывод с использованием Fernflower
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
import java.io.PrintStream;
import java.util.function.Consumer;
import java.util.stream.Stream;
interface IFoo {
void hello(String what);
static void print(String... args) {
Stream<String> stream = Stream.of(args);
PrintStream var10001 = System.out;
System.out.getClass();
stream.forEach(var10001::println);
}
}
ПРИМЕЧАНИЕ: System.out.getClass();
генерируется javac
Компилятор для проверки значения null
.