探索Java中隐藏的访问权限synthetic

探索Java中隐藏的访问权限synthetic

首先参考一下 Java8 虚拟机规范中对The Synthetic Attribute的相关描述:

A class member that does not appear in the source code must be marked using a Synthetic attribute, or else it must have its ACC_SYNTHETIC flag set. The only exceptions to this requirement are compiler-generated methods which are not considered implementation artifacts, namely the instance initialization method representing a default constructor of the Java programming language, the class initialization method, and the Enum.values() and Enum.valueOf() methods.

The Synthetic attribute was introduced in JDK 1.1 to support nested classes and interfaces.

一个类的源码中未出现的成员必须使用synthetic属性或者ACC_SYNTHETIC标志,但例外是编译期所生成的默认构造函数、类初始化方法,以及Enum.values()Enum.valueOf()

首先我来尝试着编译出一些存在synthetic访问权限的字节码:

public final class Singleton {
   
    public static Singleton getInstance() {
   
        return Holder.INSTANCE;
    }
    private 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值