gpt4 book ai didi

Java 可扩展常量

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

我的软件设置有 2 层:核心层和客户特定层。核心层定义了客户特定层应该能够扩展的常量。更具体:

public class CoreConstants
{
public static long CORE_CONSTANT_1 = 1;
public static long CORE_CONSTANT_2 = 2;
}

客户特定层应该能够添加仅在客户特定层中使用的常量。想法:

public class CustomerConstants extends CoreConstants
{
public static long CUSTOMER_CONSTANT_1 = 1000; // starting range = 1000
}

有更常见的方法来处理这个问题吗?

更多信息:继承的原因是定义客户特定常量的起始范围。在 CoreConstants 类中,我可以设置客户特定常量的起始值。然后可以定义客户特定的常量,如下所示:

public static long CUSTOMER_CONSTANT_1 = customStartValue + 1;
public static long CUSTOMER_CONSTANT_2 = customStartValue + 2;

最佳答案

整数常量通常最好用枚举替换,并且您可以使用枚举上的接口(interface)来实现您想要的目的。

interface CoreConstant {
int intValue();
}

enum CoreConstants implements CoreConstant {
CORE_CONSTANT_1(1),
CORE_CONSTANT_2(2);
private final int intValue;
public CoreConstants(int intValue) { this.intValue = intValue; }
public int intValue() { return intValue; }
}

interface CustomerConstant extends CoreConstant {}

enum CustomerConstants implements CustomerConstant {
CUSTOMER_CONSTANT_1(1000);
private final int intValue;
public CustomerConstants(int intValue) { this.intValue = intValue; }
public int intValue() { return intValue; }
}

您也许可以通过使用 IntConstant 类在枚举中使用委托(delegate)来改进设计。不幸的是,对于您的情况,您无法扩展枚举。结果是枚举类中有一些代码重复。

否则,如果您想保留公共(public)静态 int 模型,请使用接口(interface)而不是类,并最终确定常量。

interface CoreConstants {
public static final int CORE_CONSTANT_1 = 1;
}

关于Java 可扩展常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8006696/

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