【发布时间】:2016-07-27 14:40:37
【问题描述】:
我测试了class、enum、interface这3种封装常量String的方式。
public class Company {
public final static String CAPITAL_ONE = "Capital_One";
}
public interface ICompany {
public final static String CAPITAL_ONE = "Capital_One";
}
public enum ECompany {
CAPITAL_ONE
}
编译后,它们生成了 330 字节、181 字节和 818 字节的字节码,这意味着接口 ICompany 在加载到 jvm 时将占用更少的内存。这是为什么呢?
【问题讨论】:
-
也许是因为那些不是等效的数据结构?
-
接口只需要有一个字段名、类型和值。枚举除了常量值外,还需要存储多个不同的方法实现(
values()和valueOf(String),以及静态初始化)。
标签: java javacompiler