gpt4 book ai didi

java - 恒定参数设计

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

我正在使用一个包含所有类都可以引用的常量或参数值的类;


public class Parameters {
public static final String JUMP_TO_VALUE = "Parameters.JUMP_TO_VALUE";
public static final String EXCEPTION_ID = "Parameters.EXCEPTION_ID";
}

我的应用程序中的一些基础类将使用Parameters类中的参数值,如下所示:


mapOfValues.put( Parameters.JUMP_TO_VALUE, "some_value")

这很简单,我在参数中有一些基本值,我的大多数基类都会使用它们。在很多情况下,我需要向 Parameters 类添加附加参数,但我不想在每次创建新参数时过度填充或污染 Parameters 类参数被识别。我宁愿创建一些 Parameters 的子类,例如:


public class NetworkParameters extends Parameters {
public static final String HOST_NAME = "NetworkParameters.HOST_NAME";
public static final String POST_NUM = "NetworkParameters.PORT_NUM";
}

我的一些特定类将使用此类中包含的值,而不是将它们放入 Parameters 类中。

这些需要 HOST_NAME 的特定类,例如,我不希望它们引用 NetworkParameters 类,而是引用 Parameters 类。

我确信人们以前已经这样做过,但我正在寻求有关如何最好地实现此设计的建议。

最佳答案

按照您所描述的方式,这根本不可能。

当您引用静态对象时,您引用的是声明这些对象的类。很简单,如果您在 NetworkParameters 类中声明一个常量,则它不存在于 参数类,因此无法访问。

将大量参数分离到不同的包含类中(它们不需要是彼此的子类型,因为这不会实现任何目标)是非常好的做法并且经常使用。为什么您如此厌恶仅使用 NetworkParameters.POST_NUM,因为这是参数的名称,对我来说听起来完全合理?

可能对您有帮助的一件事(取决于您自己的口味)是使用 Java 5 的 static import特征。如果在类文件的顶部声明

import static the.package.name.Parameters.*;
import static other.package.NetworkParameters.*;

然后您将能够使用两个类中的所有常量名称,而无需任何前缀。当很明显什么来自哪里时,这通常是相当不错的 - 但如果您从几个类静态导入,它可能会变成一场噩梦,尤其如果您没有 IDE 来计算供您引用。

但同样 - 为什么您想要将它们引用为 Parameters.FOO,但希望它们存在于单独的类中?如果您完全做到这一点,任何一种方法(所有内容都在一个文件中,不同的常量在不同的文件中)都是好的,但您无法神奇地改变 Java 引用的规则,因为您不喜欢它们的外观。 :-)

关于java - 恒定参数设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2007866/

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