gpt4 book ai didi

java - (java)如果枚举是静态的 - 如何在我的代码中创建另一个实例(使用 DB40)?

转载 作者:行者123 更新时间:2023-12-01 17:30:07 25 4
gpt4 key购买 nike

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

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 。
给你:

enter image description here

可以看到,一个卖= 9570,另一个卖9576

我的问题是 - 如何创建此枚举的另一个实例?不是静态的吗?

如何避免?
谢谢。

最佳答案

如果满足以下条件,您可以获得多个实例

  • 您有多个类加载器。
  • 您使用 Unsafe 创建 Enum 类的实例。

需要进一步调查以确定如何避免这种情况。例如您是否设置了类加载器。这两个对象的类加载器是否不同?该库是否使用 Unsafe.allocateInstance ?

顺便说一句:对于枚举常量,我会使用“买入”和“卖出”,而不是“买入”和“卖出”。

关于java - (java)如果枚举是静态的 - 如何在我的代码中创建另一个实例(使用 DB40)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11898122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com