在我的代码中,我有以下枚举
public ennum BuySell {
buy('B', true, RoundingMode.DOWN, 1),
sell('S', false, RoundingMode.UP, -1 buy);
BuySell(char c, boolean isBuy, RoundingMode roundingMode, int mult) {
this.aChar = c;
this.isBuy = isBuy;
this.isSell = !isBuy;
this.roundingMode = roundingMode;
this.mult = mult;
}
BuySell(char c, boolean isBuy, RoundingMode roundingMode, int mult, BuySell oppositeAction) {
this(c, isBuy, roundingMode, mult);
this.opposite = oppositeAction;
oppositeAction.opposite = this;
}
}
我通过DB40保存包含该枚举的对象,并在系统加载时加载这些对象。
我看到的是,加载的对象包含具有不同对象ID的ButSell。
干得好 :
您可以看到一个卖出= 9570,另一个卖出9576
我的目的是-如何创建此枚举的另一个实例?它是静态的吗?
如何避免呢?
谢谢。
最佳答案
您可以获取多个实例,如果
您有多个类加载器。
您使用Unsafe
创建一个Enum类的实例。
需要进一步调查以确定如何避免这种情况。例如您要设置类加载器吗?两个对象的ClassLoader是否不同?库是否使用Unsafe.allocateInstance?
顺便说一句:我会使用买和卖,而不是为枚举常量买卖。