idea 这是个啥?咋做到的?

工程是el-admin,第一次见到
搜狗截图20年01月17日1249_1.png

阅读 338
评论 1月17日提问
    2 个回答

    首先纠正一下,楼上的答案是错误的,它列出来的代码显示的结果不叫子类,叫内部类
    然后上答案:因为在一个.Java源文件中出现了多个类,而导致javac指令编译生成了多个对应的.class文件。其内部代码是这样的结构:

    public class RedisConfig {
       
    }
    
    class FastJsonRedisSerializer {
        
    }
        
    class StringRedisSerializer {
        
    }

    在Java中,一个.java源文件中,可以有许多个类,但只能有一个public的类,并且public的类名必须与文件名一致。当然,一个文件中可以只有非public类,这时文件名可以跟类名不同。
    至于为什么一个Java源文件中只能有一个public类,可以参考《Java编程思想》的6.4节-类的访问权限:

    1. 每个编译单元(文件)都只能有一个public类,这表示,每个编译单元都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出错误信息。
    2. public类的名称必须完全与含有该编译单元的文件名相同,包含大小写。如果不匹配,同样将得到编译错误。
    3. 虽然不是很常用,但编译单元内完全不带public类也是可能的。在这种情况下,可以随意对文件命名。
    评论 赞赏 1月20日