gpt4 book ai didi

java - 条件接口(interface)实现

转载 作者:行者123 更新时间:2023-11-29 05:55:29 25 4
gpt4 key购买 nike

我想问一下是否有可能的方法来有条件地实现接口(interface),或者是否可以解决我想做的事情。我想制作两个接口(interface) LangA 和 LangB,它们将只包含大量最终变量,这些变量是用于打印消息的字符串。正如您可能想象的那样,LangA 是一种语言而 LangB 是另一种语言。我想要的是让我的消息处理类根据系统的语言环境有条件地实现所需的接口(interface)。我不知道这是否可以以任何方式实现,即使是使用一些自定义库,所以如果没有,请向我解释一下它是否至少可以解决。 (小问题:这在 Scala 中可行吗?谢谢!)
我想到了一个可能但可能不是非常节省资源的工作方法,它将让类的构造函数检查语言环境并根据某些无方法类的值设置自己的 final ,这些无方法类只会以每种语言的 final 为特色(例如构造函数得知语言环境是 locA,因此它设置了 finals myF1=LangA.myF1; myF2=LangB.myF2; 等)提前致谢!

最佳答案

不,这是不可能的。

“类 X 实现接口(interface) Y” 关系在编译时是固定的,不能在运行时更改。

但是,使用接口(interface)将常量导入类是一种可以追溯到 Java 1.0 的解决方案。 This anti-pattern should not be used for new development .

此外,使用编译时常量进行本地化不是 Java 中的 native 解决方案。你应该localize using resource bundles .

如果您需要一种在运行时切换实现的方法,请将常量替换为接口(interface)中的方法,并提供返回不同常量的实现:

 interface Constants {
double getAccelerationDueToGravity();
}

class EarthConstants implements Constants {
double getAccelerationDueToGravity() {
return 9.8;
}
}

class MarsConstants implements Constants {
double getAccelerationDueToGravity() {
return 3.71;
}
}

关于java - 条件接口(interface)实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12330908/

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