gpt4 book ai didi

java - 如何使用 Java 7 阻止/批量重置静态变量

转载 作者:行者123 更新时间:2023-12-01 10:28:08 24 4
gpt4 key购买 nike

我正在解析一个文本文件以查找语法匹配。为了完成这项任务,我创建了包含静态变量的变量类。然后我解析一个文件并将解析的信息分配给变量类静态元素。

Variable.name = "the parsed information"; 

然后我创建了一个 Baseline 类来检查并与 Variable 元素进行比较,以检查是否满足特定条件。

例如

if (BaseLine.x.equal(Variable.x) // do whatever.

变量类:

public class Variable {
static String name;
static String userID;
static Integer age
}

基线类:

public class BaseLine {
static String name;
static String userID;
static Integer age
}

利用 JavaFX,我在场景之间移动来加载文件、解析它、分配解析后的变量,然后将其与我的 BaseLine 类进行比较。到目前为止,一切都按预期工作,直到我按下后退按钮返回原始场景以加载新文件。现在,我遇到的问题是如何批量重置变量类中的变量,而不是在 Controller 初始化语句中一一重置?我想这样做是为了确保在点击后退按钮之前我不会从刚刚解析的旧文件中捕获任何变量。完成这项任务的正确方法是什么?

当我重置初始化 Controller 中的变量时,我能够得到我想要的东西,但这对于 OOP 来说似乎是一个漫长的过程,我有超过 100 个变量(int/sets/strings...)重置。

这是我在 Controller 初始化部分中重置静态变量的方法。

 @Override
public void initialize(URL url, ResourceBundle rb) {

Variable.name = null;
Variable.setName.clear();
Variable.age = null;

最佳答案

I was able to get what I am looking for when I reset the variables inside my initialize controller, but it seems to be a lengthy process to do for OOP I have over 100 variables (int/sets/strings...) to reset.

如果您有数百个静态变量,那么您就没有正确执行 OOP。在正确的面向对象设计中,应用程序的状态应该保存在实例变量中,并通过实例变量进行访问。静态变量应保持在绝对最小值。 (如果您可以使用依赖注入(inject)(DI)框架,您可以完全消除它们......)

坏消息是没有>>好的<<方法来重置大量静态变量。有几种>>坏<<方法;例如反射,并摆弄类加载器……但您只会用更糟糕的问题(复杂、脆弱的代码)替换一个问题(笨重的代码)。国际海事组织。

但好消息是,您将设计/实现修复为正确的面向对象,那么您就不会遇到重置变量的讨厌问题。还有很多其他事情也会变得更容易......比如编写单元测试。

关于java - 如何使用 Java 7 阻止/批量重置静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35248190/

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