有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将数组对象传递给构造函数?

我的类中有一个数组对象。我想传入一个大小为3的空数组对象作为无参数构造函数的默认值

例:

public class List{
    private String  name;
    private People[] names; default value array of names objects of size 6
public List(String name, People[] array ){
     this.name = name;
     this.names = array
    }
public List(){
    this("Sam",**[what would I put here]**);
}
}

共 (2) 个答案

  1. # 1 楼答案

    可以对数组对象使用vararg

    public MyList( String name, People ... array ) {
        this.name = name;
        this.names = array.length == 0 ? new Person[] {null, null, null} : array;
    }
    
    public MyList() {
        this( "Sam" );
    }
    

    因此,对于特殊情况,可以省略数组参数
    如果传递的数组的大小始终大于0,则此解决方案有效

  2. # 2 楼答案

    new SomeType [ size ]

    要创建特定大小的空数组,请使用new后跟数据类型,然后用方括号括起所需大小的数组

    new SomeType [ size ] 
    

    像这样:

    new Person [ 3 ] 
    

    所以你的问题是:

    this( "Sam" , new Person [ 3 ] ) ;
    

    Java忽略了空格字符。您可以根据自己的喜好将其包括在内或省略

    this("Sam",new Person[3]);
    

    示例代码:

    package work.basil.example.lister;
    
    import java.util.Arrays;
    
    public class MyList
    {
        private String name;
        private Person[] persons; //  default value array of names objects of size 3.
    
        public MyList ( final String name , final Person[] arrayOfPersons )
        {
            this.name = Objects.requireNonNull( name ) ;
            this.persons = Objects.requireNonNull( arrayOfPersons );
        }
    
        public MyList ( )
        {
            this( "Sam" , new Person[ 3 ] );  // 🡸 Your problem line, solved.
        }
    
        @Override
        public String toString ( )
        {
            return "List{ " +
                    "name='" + name + '\'' +
                    " | persons=" + Arrays.toString( persons ) +
                    " }";
        }
    
        public static void main ( String[] args )
        {
            MyList myList = new MyList();
            System.out.println( "myList = " + myList );
        }
    }
    

    跑步的时候

    myList = List{ name='Sam' | persons=[null, null, null] }


    顺便说一句,List对于一个类来说是一个糟糕的名称选择。类^{}与Java捆绑在一起,非常常用