gpt4 book ai didi

java - 在多应用程序环境中处理枚举

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:35:55 26 4
gpt4 key购买 nike

我们公司主要使用 Java 开发并支持许多“实时”系统(主要是长时间运行的服务器进程),所有这些都依赖于共享的引用数据和枚举。有时,枚举定义会扩展为包含新值,在这种情况下,我们目前会重新部署所有应用程序,原因是我们的每个应用程序都有一个包含所有库 jar 的私有(private)“lib”文件夹(包括“枚举实体”库)。显然这是不可取的,所以我很想听听其他人的建议或方法。

我想到的想法:

  1. 修改每个应用程序的启动脚本以派生最新的“枚举实体”库版本并将 jar 文件添加到类路径中。
  2. 某种在运行时动态类加载新枚举定义的机制。

这些方法的问题在于应用程序通常具有以下格式的代码:

switch(enumVal) {
case A:
// Do something.
break;
case B:
// Do something.
break;
default:
throw new IllegalArgumentException("Invalid enum value: " + enumVal);
}

... 因此当他们遇到默认情况时将开始失败。也许这表明这些实体根本不应该是枚举;在我们的案例中,这确实是一种方便的权衡。或者它可能只是表明我们的应用程序太脆弱,应该更优雅地处理默认情况。

最佳答案

先生。 Smith 是对的:扩展枚举,或老派的“枚举”int 常量,很难正确完成,通常不是一个好方法。
正如您所暗示的,新的枚举值需要使用它们的客户进行特殊的行为/处理。修改枚举后,您必须也修改客户端。这真的很糟糕,您真的应该尝试以另一种方式重新设计它。

关于java - 在多应用程序环境中处理枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926852/

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