当前位置: 首页 > 面试题库 >

Java:确定函数是使用varargs还是数组调用的

濮阳品
2023-03-14
问题内容

有没有办法找出采用varargs的Java函数(或构造函数)是否实际上是用varargs或数组调用的?

说我有以下几点:

public class MyCompositeObjects {

    MyObject[] objects;

    MyCompositeObjects(MyObjects... objects) {
        this.objects = Arrays.copyOf(objects,objects.length);
        // or just: this.objects = objects; ?
    }

    // ...
}

构造函数可以用单个MyObject[]参数调用,以后可以更改,如果我不复制构造函数中的数组,这些更改也将应用于成员变量objects,对吗?但是,如果用几个MyObjects
调用构造函数,则没有其他对array
*的引用可以在类之外稍后对其进行更改,因此我可以直接对其进行分配。我可以告诉构造函数(或通常带有varargs的任何函数)内部如何调用它吗?

  • nb:是否有特定名称?它仅仅是一个匿名数组吗?

问题答案:

不,你不能。它的意思是完全透明的-此代码:

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,这应该有助于用户使用正确的版本。



 类似资料:
  • 问题内容: 我正在使用.net Web API来获取json并将其返回给前端以获取角度。json可以是对象或数组。我的代码当前仅适用于数组,而不适用于对象。我需要找到一种方法来尝试解析或确定内容是否是对象或数组。 这是我的代码 以上可能不是最好的方法。它就是我现在所在的位置。 问题答案: 使用Json.NET,您可以这样做:

  • 问题内容: 有没有办法将Moshi设置为自动创建一个或基于JSON响应?目前,我可以明确地执行此操作。例如,我可以收到以下响应: 要么 我想创建或不必明确指定要使用的那个。 问题答案: 您可以使用JsonQualifier对此进行概括。从您的示例中,您可能会像 这是带有测试的代码,可以更深入地演示。

  • 在Java中,如何在不使用条件或三元运算符的情况下确定一个数字是奇数还是偶数? 这个问题是我的老师提出的。他还给了我一个提示,使用位运算符是可能的。

  • 问题内容: 这与另一个用户先前提出的问题有关,该问题询问如何在EclipseIDE中检测代码是否正在运行。 我注意到Eclipse总是使用而不是来启动程序。(这并不意味着启动的程序是从Eclipse启动的)。 我可以找到使用传递的参数 但这并不能告诉我它是使用还是启动的。 有没有办法找出它是使用还是启动的? 为什么Eclipse用于启动程序? 问题答案: System.console()将返回,因

  • 本文向大家介绍在JavaScript中将数组的和确定为偶数还是奇数,包括了在JavaScript中将数组的和确定为偶数还是奇数的使用技巧和注意事项,需要的朋友参考一下 问题 我们需要编写一个JavaScript函数,该函数接受一个整数数组arr。如果数组的所有元素之和为奇数,则函数应返回字符串“ odd”,如果为偶数则返回“偶数”。 示例 以下是代码- 输出结果 以下是控制台输出-

  • 问题内容: 是否真的计算了PHP数组的所有元素,还是将此值缓存在某个地方并被获取? 问题答案: 好吧,我们可以看看源代码: call ,这反过来又需要非递归数组,该数组是通过以下方式实现的: 所以你可以看到,它的。