gpt4 book ai didi

java - 具有静态内容选择器的类

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

假设我有两个类似的类(class):

public class First {

public static final String ONE = "1";
public static final String TWO = "2";
public static final String THREE = "3";
}

public class Second {

public static final String ONE = "one";
public static final String TWO = "two";
public static final String THREE = "three";
}

现在在其他类(class)我使用其中之一:

public class Third {

//....
@Override
public String toString()
{
System.out.println( First.ONE );
}
}

但是我现在想做的是创建一种选择器,假设类 Third 的构造函数获取 boolean 值并基于它选择使用哪个类,但我不想到处都使用 if (..) 语句,因为它太多了。

所以抽象地说我想要这样:

public class Third {

//some global var with reference? to static class

public Third(boolean first)
{
if( first ) {
//set class First as source of static fields
} else {
//set class Second
}
}

//....
@Override
public String toString()
{
System.out.println( globalVariableWithReference.ONE );
}
}

是否可以不关注这些类?

最佳答案

您可以使用带有 getter 方法的接口(interface),然后让两个类实现该接口(interface)(并在调用 getter 方法时返回它们各自的值)。然后,您可以创建一个映射来在 boolean 值和两个实现类之间进行映射(通过接口(interface)),并调用映射到 boolean 值的对象。当然,这要求您为每个类创建一个对象,但您会得到相同的行为。

另一种选择是创建一个包装类,将 if/else 逻辑包装到其自己的静态方法中,并根据 boolean 值从两个类返回适当的值值(value)。虽然您需要为此包装类编写 if/else 逻辑,但不需要多次编写,只需调用包装类的方法即可

关于java - 具有静态内容选择器的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10652354/

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