尝试使用可变长度参数时不兼容的类型错误

时间:2017-07-28 04:43:26

标签: java variable-length

我试图在构造函数中使用可变长度参数,但是我得到错误消息:

  1. '不兼容的类型字符串无法转换为int'

  2. 非法开始运作,';'预期

    public class Personnel {
    
    private String pname;
    private String rank;
    private String certs [];
    
    public static int totalPersonnel = 0;
    
    public Personnel(String name, String rank, String... certs) {
    
        this.pname = name;
        this.rank = rank;
        this.certs =  certs;
    
        incrPersonnel();
    
    }
    
    public static void incrPersonnel(){
        totalPersonnel++;
    }
    
    public static void main(String myArgs[]){
        Personnel Alex = new Personnel ("Alex", "CPT", ["none"] );
    

    }

    }

1 个答案:

答案 0 :(得分:3)

如果您尝试传递数组,那么您使用的方式不正确,而您必须使用new String[]{"none"},因此您的代码应如下所示:

public static void main(String myArgs[]) {
    Personnel Alex = new Personnel("Alex", "CPT", new String[]{"none"});  
}

或者您也可以使用:

public static void main(String myArgs[]) {
    Personnel Alex = new Personnel("Alex", "CPT", "val1", "val2", "val3");
    //--------------------------------------------[_____________________]
}

但是在你的情况下你只传递一个值,所以你不必使用new String[]{..},你需要像这样传递它:

Personnel Alex = new Personnel("Alex", "CPT", "none");

如果您不想传递任何价值,那么您不需要指定它,您只需传递第一个和第二个值,如:

Personnel Alex = new Personnel("Alex", "CPT");
//------------------------------------------^____no need to pass

它将为数组返回empty