Java 如果在编译时删除了参数名,Spring LocalVariableTableParameterNameDiscoveryr如何通过读取类文件来获取名称?

Java 如果在编译时删除了参数名,Spring LocalVariableTableParameterNameDiscoveryr如何通过读取类文件来获取名称?,java,spring,Java,Spring,对于同一个Junbin.java文件,由javac、javac-parameters和gradlebuild编译的输出是不同的。 我想用三个案例来说明让我困惑的问题 原始文件Junbin.java public class Junbin { public Junbin() { } public static void main(String[] ko) throws UnknownHostException, SocketException, ClassNotFound

对于同一个Junbin.java文件,由javac、javac-parameters和gradlebuild编译的输出是不同的。 我想用三个案例来说明让我困惑的问题

原始文件Junbin.java

public class Junbin {
    public Junbin() {
    }

    public static void main(String[] ko) throws UnknownHostException, SocketException, ClassNotFoundException {
        System.out.println("-----");
    }

    public static void t(List<? super Integer> lis) {
        lis.add(Integer.valueOf(1));
    }
}
公共类Junbin{
公俊斌(){
}
公共静态void main(字符串[]ko)抛出UnknownHostException、SocketException、ClassNotFoundException{
System.out.println(“----”);
}

公共静态void t(List它使用调试信息映射,如以下源代码快照中所述:

Map<Member, String[]> map = this.parameterNamesCache.get(declaringClass);
if (map == null) {
    map = inspectClass(declaringClass);
    this.parameterNamesCache.put(declaringClass, map);
}
if (map != NO_DEBUG_INFO_MAP) {
    return map.get(originalMethod);
}
Map Map=this.parameterNamesCache.get(declaringClass);
if(map==null){
map=检查等级(declaringClass);
这个.parameterNamesCache.put(去极化类,映射);
}
如果(映射!=无调试信息映射){
返回map.get(originalMethod);
}

因此,当您编译源文件时,调试符号会被保存。如果您编译的文件中没有调试符号,它也不会显示任何方法名称。因此,很明显,Intellij Idea根本不使用调试符号,这就是所有的解释:)

请以文本形式发布代码,而不是模糊的图像。好的,现在所有代码都以文本形式显示。感谢您的回答,我通过使用-g选项编译java文件理解了这一点
public class Junbin {
    public Junbin() {
    }

    public static void main(String[] ko) throws UnknownHostException, SocketException, ClassNotFoundException {
        System.out.println("-----");
    }

    public static void t(List<? super Integer> lis) {
        lis.add(Integer.valueOf(1));
    }
}
Map<Member, String[]> map = this.parameterNamesCache.get(declaringClass);
if (map == null) {
    map = inspectClass(declaringClass);
    this.parameterNamesCache.put(declaringClass, map);
}
if (map != NO_DEBUG_INFO_MAP) {
    return map.get(originalMethod);
}