在我的代码中,我有以下枚举

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?

顺便说一句:我会使用买和卖,而不是为枚举常量买卖。

09-26 09:41