gpt4 book ai didi

java - 如何改变 "private static final"参数?

转载 作者:行者123 更新时间:2023-12-02 09:44:49 24 4
gpt4 key购买 nike

我是 java 和面向对象编程的新手,我有一个问题。有一个巨大的java代码,其中有多个包和剪贴簿(每个包和剪贴簿都有几个类)。它有许多“私有(private)静态最终”参数及其值。现在,我需要使这些值成为变量,这意味着我需要更改这些参数的值,并且每次运行代码以获得结果。如果我每次都更改代码并运行代码,这并不容易。我想将数字一次性提供给代码(如数字列表)并运行代码。知道如何在对当前代码进行最少更改的情况下做到这一点吗?例如,定义新类并将该类中的所有变量作为数组并使用像 K_value=K(i) 这样的 for 循环,并将代码从例如“私有(private)静态最终 int k = 10”到“私有(private)静态最终 int k= K_value”。为了清楚起见,我们假设:

private static final K= 5
private static final Q= -5
private static final M= 1

K 可以是:5, 10, 15Q 可以是 -5、-10、-15、-20M 可以是 1、2我想使用上述值的全部/部分组合来运行代码。例如: 1) K=5、Q=-5、M=1 和 2) K=5、Q=-5、M=2 3) K=5、Q=-10、M=1 等等。

最佳答案

我将回答您有关最少更改量要求的问题。任何“快速而肮脏”的方法都将被标记为@@@,我会敦促您不要在生产场景中使用它们(例如,仅将它们用于一个-off 测试目的或一些旧的继承的非关键代码)。之后我将表达一些关于概述场景的一般想法。

  1. 将环境变量(或系统属性)读取到静态最终变量中,并使用其环境变量/系统属性的不同值多次启动程序:private static final int someConst = Integer.parseInt (System.getEnv("someConst")) @@@

  2. 使变量成为非最终变量,并在每次运行建议的 for 循环方法后更改值。请注意,这是极其脆弱/危险/容易出错的,因为变量只能在例如以下时间读取一次。应用程序启动@@@

  3. 重写使用给定常量的组件,以要求该值作为构造函数或函数参数。根据应用程序的大小或您对重构未知代码库的信心,这可能会很困难。如果您有经过良好测试的应用程序,请考虑使用此方法

在阅读您的问题时,我注意到概述的场景似乎是一种算法/逻辑,应该对输入值而不是常量进行操作(您描述它们不再是常量)。如果可能,应重构代码以反射(reflect)这些新情况:使其可实例化(添加构造函数参数)以获取不同的值或向受影响的函数/类添加参数。所有建议的修复只是修改尽可能少的代码的解决方法。我的建议:如果使用场景适用于生产环境,请重写此内容;如果这是一次性教程/测试/探索,则使用概述的黑客解决方法之一。

关于java - 如何改变 "private static final"参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56742652/

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