教程:设置值

教程:设置值

问题让我们来看下面这个简单的程序:

import java.util.*;

class Aquarium {

private ArrayList fish;

public static void main(String[] args) {

var aquarium = new Aquarium();

System.out.println(aquarium.getFish());

// fish has already been initialized

System.out.println(aquarium.getFish()); // line n1

}

private ArrayList getFish() {

if (fish == null) initFish();

return fish;

}

private void initFish() {

fish = new ArrayList<>(Arrays.asList(

new Fish("Bubbles"),

new Fish("Calypso"),

new Fish("Dory")

));

}

}

class Fish {

private String name;

Fish(String name) {

this.name = name;

}

public String toString() {

return name;

}

}

在此代码中,我们有一个实例变量 fish ,该变量被打印了两次。 它采用了延迟初始化,在我们的例子中,这意味着该字段在其 getter 被调用之前不会被赋值。

考虑这样一种情况:您已经执行到 line n1 ,并且 fish 已经被初始化,但您想查看 initFish 方法? 此方法仅在 (fish == null) 计算结果为 true 时才会执行,而在 line n1 时已不再是这种情况。

对于这个简单的程序,我们可以重新启动会话。 然而,在更复杂的情况下,您可能会发现重新启动会话并重现导致某种状态的步骤非常不方便。 让我们学习更聪明的方法。

相关星际资讯

如何修复Android照片自动删除的问题? 7 解决方案
365体育手机版app下载

如何修复Android照片自动删除的问题? 7 解决方案

🕒 01-01 👁️ 7066
怎样消除原唱只留伴奏?轻松去原唱,伴奏瞬间呈现
365体育手机版app下载

怎样消除原唱只留伴奏?轻松去原唱,伴奏瞬间呈现

🕒 09-16 👁️ 6380
【原】【每日一裁】国际级裁判达米尔·斯科米纳