消除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注释不适用。