载心问情 2015-09-01 07:03 采纳率: 100%
浏览 1478
已采纳

有关Java static的疑问(凑字数的...)

public class StaticTest {

private static List<String> listA;
private static List<String> listB;

static {
    listA = new ArrayList<String>();
    listA.add("aaa");

    setB(listB);
}

public static void main(String[] args) {
    System.out.println(listA == null);
    System.out.println(listB == null);
}

private static void setB(List<String> listB) {
    if (listB == null) {
        listB= new ArrayList<String>();
        listB.add("bbb");
    }
}

}

我不知道为什么listB是空的,谁能详细解释下?

  • 写回答

6条回答 默认 最新

  • 圣-雄霸天下 2015-09-01 07:08
    关注

    setB方法里面的listB被你重新new了,就和private那个不是同一个对象了,所以listB是空的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?