不,你不能。它的意思是完全透明的-此代码:
new MyCompositeObjects(a, b);
完全等同于
new MyCompositeObjects(new MyObjects[] { a, b });如果您可以 相信 调用者可以做正确的事情,则可以始终创建两个静态方法并使构造函数私有:
public static MyCompositeObjects createWithCopy(MyObjects[] values) { return new MyCompositeObjects(Arrays.copyOf(values, values.length));}public static MyCompositeObjects createWithoutCopy(MyObjects... values) { return new MyCompositeObjects(values);}private MyCompositeObjects(MyObjects[] values) { this.objects = values;}请注意“ with copy”版本如何不使用varargs,这应该有助于用户使用正确的版本。



