当前位置: 首页 > 知识库问答 >
问题:

有没有比单元素数组更好的引用容器?

经嘉
2023-03-14

Java匿名类只能从周围的方法访问变量,如果该变量是final,因此内部类不能写入该变量。为了捕获由封闭类型创建的对象,我创建了一个final单元素数组作为引用:

    final String[] ref = new String[1];
    final Runnable runnable = new Runnable() {
        public void run() {
            ref[0] = "Hello world";
        }
    };

    runnable.run();
    System.out.println(ref[0]);
    final Ref<String> ref = new Ref<>();
    final Runnable runnable = new Runnable() {
        public void run() {
            ref.set("Hello world");
        }
    };

    runnable.run();
    System.out.println(ref.get());

...标准Java运行时中是否存在这样的类?

我查看了java.lang.ref.reference,这不是一回事。这些都是不可变的,唯一的实现是针对弱/幻影引用的。

共有1个答案

况鸿雪
2023-03-14

我通常会使用atomicreference

final AtomicReference<String> ref = new AtomicReference<String>();
final Runnable runnable = new Runnable() {
    public void run() {
        ref.set("Hello world");
    }
};

runnable.run();
System.out.println(ref.get());

这里唯一的缺点是,除非涉及多个线程,否则它会稍微误导,因为AtomicReference通常是为并发访问而设计的-但作为一个简单的包装器对象,我认为这是一个很好的解决方案。

 类似资料:
  • 我有几个问题。我正在做家庭作业,但遇到了一些令人困惑的事情。(我上的是入门课,有错误,很抱歉。) 实现一个以整数数组和int x作为其大小的类。在类中创建一个方法,该方法创建一个长度比数据长度大1的新数组。然后创建一个方法,将所有数据元素复制到新数组中,并将x值添加到数组的最后一个元素中。创建一个方法来返回新数组中的所有整数。 这是我的 这只是返回NULL。 我的问题是上面任务的最后一点。“创建一

  • 问题内容: 我目前正在使用以下功能比较字典值。有更快或更更好的方法吗? 编辑:两个字典包含相同的键。 问题答案: 如果字典具有相同的键集,并且您需要所有这些打印件以实现任何值差异,那么您将无能为力。也许像这样: 几乎等同于您所拥有的,但是您可能会得到更好的演示,例如在循环使用diffkey之前对其进行排序。

  • 我的模式是: 我的xml将是: 案例1。 或案例2。 对于案例2,没有问题。但对于案例1,我得到了以下错误: 如何修改wsdl,使其同时接受案例1和案例2?请帮忙。

  • 问题内容: 我正在尝试复制没有指定元素的数组。假设我有以下数组: 我想要的是将数组复制到array2,而元素不包含整数“ 6”,因此它将包含“ {1,2,3,4,5,7,8,9}” 我只想使用循环,这是我到目前为止所拥有的,但是它不起作用 谢谢 问题答案:

  • 我有一个使用函数引用的类: 在典型运行期间,此函数将被称为108次。 类进入库,函数由库的用户定义。所以我不能在类中定义函数。 我读过这个: ()缺点是在被调用时引入一些(非常小的)开销(因此在性能非常关键的情况下,这可能是一个问题,但在大多数情况下不应该) 有没有更有效的方法将函数< code>u传递给类< code>equation?这算不算“性能非常关键的情况”? 编辑 似乎有点混乱。为了清

  • 我正在尝试更新mongob文档中数组中包含的单个子元素。我想使用其数组索引引用该字段(数组中的元素没有任何我可以保证将是唯一标识符的字段)。似乎这应该很容易做到,但我无法弄清楚语法。 这是我想在伪json中做的事情。 之前: 之后: 似乎查询应该是这样的: 但这行不通。我花了很长时间搜索mongodb文档,并尝试了这种语法的不同变体(例如,使用,等等)。我找不到任何关于如何在MongoDB中完成这