gpt4 book ai didi

用于检查该值已设置的 Java 模板

转载 作者:行者123 更新时间:2023-11-30 07:01:11 25 4
gpt4 key购买 nike

在 Java 中,我有一堆变量(不同类型),我想在使用它们之前检查它们是否已设置,如果没有,那么结果总是相同的,我想抛出一个错误那会被抓到更高的地方。从理论上讲,代码的设计应该永远不会发生这种情况,但导致这种情况发生的错误后果太大,不能只进行单元测试。

我正在考虑制作一个具有 get() 和 set() 函数的模板。 set 将设置值并设置一个 boolean 值以让它知道它已被设置并且 get() 将检查 boolean 值并返回值或抛出错误。像这样的东西:

Class ImportantInfo<T> {
private T t;
private beenSet = false;
public T get(){
if(beenSet) return t;
else throw error;
}
public void set(T value){
t =value;
beenSet = true;
}
}

这是正确且最好的方法吗?还有其他可能更好的方法吗?我担心我过度设计了解决方案,或者 Java 中可能已经存在如此简单的模板?

最佳答案

执行此操作的一种方法是使用 Java Optionals . Optional 表示可能存在也可能不存在的值。

  • Optional.empty() 表示一个不存在的值
  • .get() 方法获取一个值(如果存在)
  • isPresent() 检查是否已设置值。

与简单地检查 null 相比,使用 Optional 的主要优势在于,optional 会强制您使用 .get(),因此您不必不要不小心调用了一个没有设置的空值。

在您的特定情况下,我会将类顶部的所有值初始化为 Optional.empty(),然后使用 .isPresent 来确保它们是设置。

注意:这仅适用于 Java 8

(显然 Guava Optional 将在低于 8 的版本中工作(请参阅 Tom 的评论 - 我没有这方面的经验)

关于用于检查该值已设置的 Java 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30056951/

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