java中引用类型的问题

请输入代码
public class Test2 {
    private static List<List<Integer>> result;
    public static List<List<Integer>> combine(int n,int k){
        ArrayList<Integer> temp=new ArrayList<>();
        if(n<=0||k<=0||k>n){
            return result;
        }
        generateCombination(n,k,1,temp);
        return result;
    }
    public static void generateCombination(int n,int k,int start,ArrayList<Integer> list){//将从start开始的所有的可能情况放入到list中
        if (list.size()==k){
            **result.add((List<Integer>) list.clone());**
            /*System.out.println(result.toString());*/
            return;
        }
        for(int i=start;i<=n;i++){
            list.add(i);
            generateCombination(n,k,i+1,list);
            list.remove(list.size()-1);
        }
    }
    public static void main(String[] args) {
        Scanner sin=new Scanner(System.in);
        int N=sin.nextInt();
        int K=sin.nextInt();
        result=new ArrayList<>();
        System.out.println(combine(N,K));
    }
}

为什么
result.add(list)
在主程序中打印的时候输出result的都是空呢?
而使用result.add((List<Integer>) list.clone());才能把list中的内容保存到result里边,
就算result里边每一次add都是引用了同一个对象,但是也不应该为空啊?有没有人解答一下?

弑天下
浏览 442回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java