我有多种方法,每个方法都包含对单个数组的引用。在有这样一个引用的一种方法中,我想将数组更改为null。问题是,我不仅要更改对null的引用,还要全部更改。 Java有办法吗?

public void moo()
{
    boolean[] cow = new boolean[10];
    baa(cow);

    assertEquals(true, cow == null);
}

private void baa(boolean[] sheep)
{
    *do stuff*
}


换句话说,我可以在baa()中对绵羊做什么,以便arrnull并且moo中的assert为true?

谢谢!

最佳答案

简短的答案是不,你不能。 cow是对实际数组的引用,您要将cow的副本传递给方法baa。不使用某种欺骗手段就无法更改原始参考。

但是,您可以使用的一个技巧是编写自己的包装器类。这样,您可以将引用传递给对cow的引用。

public class CowWrapper {
    public boolean[]cow;
    public CowWrapper(boolean[]cow){
        this.cow=cow;
    }
}
public void moo() {
    CowWrapper cow=new CowWrapper(new boolean[10]);
    baa(cow);
    assertNull(cow.cow);
}
public void baa(CowWrapper sheep) {
    sheep.cow=null;
}

关于java - 如何在Java中将对单个数组的所有引用更改为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8173644/

10-09 05:39