Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
消除Java构造函数中的冗余_Java - Fatal编程技术网

消除Java构造函数中的冗余

消除Java构造函数中的冗余,java,Java,我有一个构造器,我正试图在我的作业中浓缩下来 public int[] StudentIds; public Students(int[] a) { StudentIds = a; } public static void main(String[] args) { Students s1 = new Students(new int[] {123, 456, 789}); 我想知道的一行是给学生的(int[]a),然后必须在其中加入一个来表示学生ID。在Students(

我有一个构造器,我正试图在我的作业中浓缩下来

public int[] StudentIds;
public Students(int[] a) 
{
    StudentIds = a;
}

public static void main(String[] args)
{
    Students s1 = new Students(new int[] {123, 456, 789});

我想知道的一行是给学生的(int[]a),然后必须在其中加入一个来表示学生ID。在Students()的原始括号/括号中是否有这样做的方法?或者我必须像这样把它流出来吗?

您可以使用变量参数说明符

public Students(int ... a){
      //a can be accessed like an int array
你打不来

 Students s1 = new Students(5,3,1)

要在不使用int[]{}调用的情况下构造

可以使用
..
varargs,如下所述

如果你愿意:

public Students(int... students) {
}
调用时,将为学生分配一个整数数组:

new Students(1,2,3);

对于方法和构造函数,存在类似varargs的参数。所以,你可以这样做:

public Students(int ...a) 
{
    StudentIds = a;
}

不,那是唯一的办法。顺便说一句,你的变量
StudentIds
应该命名为
StudentIds
(并且应该是私有的)。我不确定我是否理解这个问题。你想摆脱什么样的冗余?参数声明?@Mureinik我想OP应该像TypeScript中那样:
公共学生(private int[]studentIds)
,它直接在括号中声明并初始化属性。@Carcigenicate您的评论没有意义。@JBNizet它怎么没有意义?我刚刚意识到,虽然它们是java,而不是C++,所以我的RAII注释不适用。