如何在Java中向构造函数传递空数组?

4
这是代码:

// Default constructor
public Bestellung() {
    this(null, null, null);
}

// Initial constructor
public Bestellung(LocalDateTime zeitstempelBestellung, LocalDateTime zeitstempelAuslieferung,
        PizzaVO[] warenkorb, int index) {
    super(); 
    this.zeitstempelBestellung = zeitstempelBestellung;
    this.zeitstempelAuslieferung = zeitstempelAuslieferung;
    this.warenkorb = warenkorb;
    this.index = index;
}

我希望完成默认构造函数。因此,我需要将两个localDateTimes、一个空数组和一个int传递给构造函数。如何传递空数组?

7个回答

9
如何传递空数组?
new PizzaVO[] { }

顺便说一下,这不是默认构造函数:

public Bestellung() {
    this(null, null, null);
}

这是一个无参构造函数。


2
创建空数组的方法与创建初始大小为0的普通数组完全相同:new PizzaVO[0]
因此,您的构造函数将如下所示:
public Bestellung() {
    this(null, null, new PizzaVO[0], 0);
}

(您没有说明如何初始化LocalDateTime对象,因此我传递了null。)

1

Like this:

public Bestellung() {
    this(null, null, new PizzaVO[]{}, 1);
}

1

只需制作:

this.warenkorb = new PizzaV0[10];

这将初始化一个包含10个空值的空数组。

1
我不确定我完全理解你想做什么或者你想实现什么,也许你可以再明确一点?
你可以像现在这样传递null(虽然这不是一个空数组),或者你可以传递一个真正的空数组new PizzaVO[0](这是一个没有任何元素空间的PizzaVO数组)。
public Bestellung() {
    this(null, null, null, 0);
}

or

public Bestellung() {
    this(null, null, new PizzaVO[0], 0);
}

你是在寻找其中之一吗?还是我完全误解了什么?


0

嗯,你为我们的其他元素使用“null”;这将创建一个很可能是无用的 Bestellung 对象;因为第一次想要对其进行操作时(比如调用其中的方法),很可能会导致 NullPointerException。

那么,是什么阻止你也对数组使用“null”呢?

好吧,严肃的回答是,你可以用以下方式创建数组

new PizzaVO[] {}

举个例子。

而真正严肃的答案是:通常情况下,大部分时间都没有必要拥有所有空对象。所以你不应该用这种方式实现你的默认构造函数。

换句话说:如果你的对象不能在没有真实存在的参数的情况下被创建……那就不要提供一个允许用户这样做的构造函数。


0
你可以像这样传递一个空数组参数
new PizzaVO[0]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接