Java 有内部类的一个.java 文件打包会生成多个文件

Java 有内部类的一个.java 文件打包会生成多个文件,第1张

Java 有内部类的一个.java 文件打包会生成多个文件 这是map字段 ,在map初始化的时候 赋几个元素
public static final Map DICT = new HashMap(16) {
        {
            put("A","1001");
            put("B","1002");
            put("C","1003");
            put("D","1004");
            put("E","1005");
        }
    };

编译以后 在idea目录下只会显示一个 .class 文件
这是编译后的代码

public class test1 {
    public static final Map DICT = new HashMap(16) {
        {
            this.put("A", "1001");
            this.put("B", "1002");
            this.put("C", "1003");
            this.put("D", "1004");
            this.put("E", "1005");
        }
    };

    public test1() {
    }

    public static void main(String[] args) {
        String a = (String)DICT.get("A");
    }
}

idea目录下只会显示一个文件,而不会显示内部类的引用,在这记录一下。。。 因为生产上遇到一个问题 需要增加一个Map字典来做映射。

新增完Map字典以后,编译完成,将class文件放到生产

public static final Map DICT = new HashMap(16) {
        {
            put("A","1001");
            put("B","1002");
            put("C","1003");
            put("D","1004");
            put("E","1005");
        }
    };

    public static final Map DICT2 = new HashMap(16) {
        { // 新增的Map 字典
            put("A","1001");
            put("B","1002");
            put("C","1003");
            put("D","1004");
            put("E","1005");
        }
    };
    
    public static void main(String[] args) {
        String a = DICT.get("A");
        String a2 = DICT2.get("A");
    }

因为第一次发版的时候 不用单独提class文件放到生产

编译完成以后 还是一个class文件,没有注意到内部类的情况,线上就报了一个错

Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: 
com.dto.test$4:method (I)V not found

提示找不到找不到元素,后来一想 我用了内部类,可能会生成多个文件,是不是没有都提上去,结果打开本地项目文件夹果然发现了几个引用文件。

将引用文件放到生产上 ,正常使用。

结论:自己的粗心,还有对 Java 基础不够深入。

在此记录一下这个粗心的问题。end

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4017714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-22
下一篇 2022-10-22

发表评论

登录后才能评论

评论列表(0条)

保存