在公共构造函数中选择两个私有构造函数

时间:2015-04-01 01:15:56

标签: java constructor

我有以下Java类:

public class Permutation {
 ...
private Permutation(int[] cycle){...} //1

private Permutation(int[] inp, int[] outp){...} //2

public Permutation(int[] array, boolean isCycle){ //3
        if(isCycle){
            //creation new Permutation through "1"
        }
        else{
            //splitting on input and output arrays and
            //creation new Permutation through "2"
        }
    }
 ...
}

但是当我试图实现构造函数“3”时,我编译错误。我知道,我可以使用这样的静态方法来实现这个逻辑:

public static Permutation createPermutation(int[] array, boolean isCycle){
    if(isCycle){
        return new Permutation(array);
    }
    //else branch...
}

我也知道,对this()super()的调用必须是构造函数中的第一个语句。 但是我的班级中是否可以使用架构“3”(不是静态创建者或其他东西)来实现构造函数?如果有可能,我该怎么做?

UPD:它与How do I call one constructor from another in Java?不重复,因为在我的问题中,我应该在调用this()方法之前意识到一些逻辑,这是我问题的主要部分。

0 个答案:

没有答案