You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java枚举类中getAbbreviation()Getter方法的内部实现原理是什么?

实现原理解析

你看到的输出逻辑本质是Java枚举的类特性,整个执行流程如下:

  • 首先Java的枚举本质是特殊的普通类,你定义的Size枚举里的每个常量,都是Size类的唯一全局单例实例:
    定义SMALL("S")的时候,相当于调用了枚举的私有构造方法private Size(String abbreviation),把字符串"S"传给构造方法,赋值给当前SMALL实例的私有成员变量abbreviation。同理MEDIUM实例的abbreviation值为"M"、LARGE为"L"、EXTRA_LARGE为"XL"。
  • 当你输入SMALL后,Enum.valueOf(Size.class, input)会根据输入的字符串匹配到Size类中对应的SMALL枚举实例,赋值给size变量。
  • 调用size.getAbbreviation()时,就是调用这个SMALL实例的公开getter方法,返回它自身存储的私有成员变量abbreviation的值"S",所以最终会输出abbreviation=S。

额外补充:枚举的构造方法默认是私有访问权限,外部无法手动创建枚举实例,所以每个枚举常量的属性都是初始化时就固定好的,调用getter只会返回当前实例绑定的属性值。

内容的提问来源于stack exchange,提问作者quan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 20:45:00