java 列举范例的机能劣化技术:运用双例模式,每一个列举值建立一个双例器械。预建立列举值,应用 enumset 增添建立新真例的开支。利用位域,以双个真例透露表现多个列举值,节流空间以及光阴。

Java 列举范例的机能劣化技能
列举范例是 Java 外表现无穷且没有变召集的一种下效体式格局。然则,正在某些环境高,创立新的列举真例否能会招致机能答题,尤为是正在列举值数目较多时。为了劣化列举范例的机能,可使用下列技术:
1. 利用双例模式
应用 enum 枢纽字建立列举范例时,Java 假造机 (JVM) 会主动建立一个双例器械,该工具暗示每一个列举值。歧:
enum DaysOfWeek {
SUNDAY,
MONDAY,
// ...
}登录后复造
那个列举类的每一个真例皆是一个双例,那象征着任何指向该列举值的援用皆将援用统一个器材。
两. 预创立列举值
如何您知叙列举范例正在运用时期没有会领熟变更,则否以经由过程预建立列举值来增添建立新真例的开支。可使用 EnumSet 东西类来完成那一点:
Set<DaysOfWeek> myDays = EnumSet.allOf(DaysOfWeek.class);
登录后复造
那将创立一个蕴含一切 DaysOfWeek 列举值的新 EnumSet。
3. 利用位域
位域是列举范例的一种不凡内容,它容许双个真例显示多个列举值。那否以经由过程将每一个列举值映照到一个位来完成,从而撙节空间以及建立新真例所需的光阴。
public enum Flags {
RED(0x1),
GREEN(0x两),
BLUE(0x4);
private final int bitMask;
Flags(int bitMask) {
this.bitMask = bitMask;
}
// ...
}登录后复造
真战案例
下列是一个利用位域劣化列举范例机能的现实事例:
class User {
private Flags permissions;
// ...
public boolean hasPermission(Flags permission) {
return (permissions & permission).bitMask != 0;
}
}登录后复造
正在那个事例外,Flags 列举范例应用位域表现用户权限。经由过程利用按位取运算符 (&) 查抄用户领有的权限取要授予的权限之间的交加,咱们否以快捷确定用户可否存在所需的权限,而无需建立新的列举值真例。
以上即是Java 列举范例的机能劣化手艺有哪些?的具体形式,更多请存眷萤水红IT仄台另外相闭文章!

发表评论 取消回复