gpt4 book ai didi

java - Java中如何使用静态扩展变量?

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

我们的类如下:

public class Base {
protected static string rule = "test_1";

public static getRule(){
/* get rule value from origin class*/
}
}

我们有一些从base类扩展而来的类。例如:

public class Derived extends Base {
static {
rule = "test_2";
}
}

现在我们想要获取规则变量,但在某些情况下:

  • 如果用户调用 Derived.getRule(),它会返回 test_2
  • 如果衍生rule变量不是init,则返回test_1
  • 我不想在所有子类中重写 getRule 来回答问题。

我该怎么办?

最佳答案

问题是,一旦使用(初始化)Derived类,Base.rule就会改变,现在到处都是test_2返回,无论实际类别如何。

因此,该技术必须在没有静态(以这种形式)的情况下完成。有一个分类的类别级别值。

public class Base {
private static final String BASE_RULE = "test_1";

public String getRule() {
return BASE_RULE;
}
}

public class Derived extends Base {
private static final String DERIVED_RULE = "test_2";

@Override
public String getRule() {
return DERIVED_RULE;
}
}

或者,您可以使用标记接口(interface) - 但它们不是互斥的,因此不适用于某些 getCategory()。

public class Base implements Test1Category {
}

public class Derived extends Base implements Test2Category { ... }

if (base instanceof Test2Category) { ... }

关于java - Java中如何使用静态扩展变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51375764/

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