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

Java传播算子

广亮
2023-03-14
问题内容

我不确定我在这里使用的词汇,如果我错了,请指正。

在Javascript中,我有以下代码:

let args = [1,2,3];

function doSomething (a, b, c) {
    return a + b + c;
}

doSomething(...args);

如您所见,调用时doSomething,我可以使用...spread运算符将参数“转换”为1, 2, 3

现在,我正在尝试使用Java做同样的事情。

假设我有一Foo堂课:

public class Foo {
    public int doSomething (int a, int b, int c) {
        return a + b + c;
    }
}

现在我想打电话给doSomething

int[] args = {1, 2, 3};

我想使用类似的方法doSomething (...args)来代替doSomething(args[0], args[1], args[2])

我看到这在函数的声明中是可行的,但我不想更改这种函数的实现。


问题答案:

Java语言不提供操作员来执行此操作,但是其类库提供了执行所需功能的工具。

[摘自OP的评论] Foo的开发人员可以自行选择doSomething函数采用的参数数量。然后,我将能够构造一个“袋子”并将其注入方法中。

使用 反射API
,这就是它的用途。它要求您将参数打包在数组中。还需要做很多额外的工作,包括包装/解包单个方法参数和方法结果,但是您可以在运行时检查签名,构造数组并调用方法。

class Test {
    public static int doSomething(int a, int b, int c) {
        return a + b + c;
    }
    // This variable holds method reference to doSomething
    private static Method doSomethingMethod;
    // We initialize this variable in a static initialization block
    static {
        try {
            doSomethingMethod = Test.class.getMethod("doSomething", Integer.TYPE, Integer.TYPE, Integer.TYPE);
        } catch (Exception e) {
        }
    }
    public static void main (String[] ignore) throws java.lang.Exception {
        // Note that args is Object[], not int[]
        Object[] args = new Object[] {1, 2, 3};
        // Result is also Object, not int
        Object res = doSomethingMethod.invoke(null, args);
        System.out.println(res);
    }
}

上面的代码显示6(demo)。



 类似资料:
  • 1.算法简介 AP(Affinity Propagation)通常被翻译为近邻传播算法或者亲和力传播算法,是在2007年的Science杂志上提出的一种新的聚类算法。AP算法的基本思想是将全部数据点都当作潜在的聚类中心(称之为exemplar),然后数据点两两之间连线构成一个网络(相似度矩阵),再通过网络中各条边的消息(responsibility和availability)传递计算出各样本的聚类

  • 问题内容: 我听说过这两种语言都称为“传播语法”和“传播算子”,后者更为流行。有关MDN文档的URL表明,它最初被称为扩展运算符,但后来更改为扩展语法,而MDN的运算符列表未提及它。 Google似乎建议使用术语“运营商”来普及和接受,例如Microsoft文档和[es6-features.org]等网站都将其称为“运营商”。 在ECMAScript的上下文中,哪一个术语最正确(如果有),为什么?

  • 前面几节里我们使用了小批量随机梯度下降的优化算法来训练模型。在实现中,我们只提供了模型的正向传播(forward propagation)的计算,即对输入计算模型输出,然后通过autograd模块来调用系统自动生成的backward函数计算梯度。基于反向传播(back-propagation)算法的自动求梯度极大简化了深度学习模型训练算法的实现。本节我们将使用数学和计算图(computationa

  • 本文向大家介绍使用JSON.stringify()显示传播算子结果?,包括了使用JSON.stringify()显示传播算子结果?的使用技巧和注意事项,需要的朋友参考一下 使用Spread Operator,允许将表达式扩展为多个参数,元素,变量等。 您可以使用JSON.stringify()将JavaScript对象转换为字符串。在这里,我们的目标是对details1和details2使用传播运

  • 问题内容: 是否有关于Java中异常传播的准则? 何时在方法签名中添加例外?例如:如果仅当缺少必要的程序资源时才引发异常,并且只能在顶层进行处理,那么是否可以将所有使用erring方法的方法传播给使用此异常的所有方法? 有没有好的做法?有不良做法吗? 很抱歉,如果我含糊不清,但是我只是在寻求有关异常的编程风格的(一般)建议。 问题答案: 过去对我有帮助的准则包括: 当方法无法处理异常时引发异常 ,

  • 问题内容: 在React文档中给出以下示例代码: 我做了一些调查,最终得出的结果是: 进而得出。 但是我想知道的是,为什么我不能这样做: 我看不出点差运算符的含义是什么。 问题答案: 这有助于使您的代码更简洁-由于是对象,所以散布运算符会将传入的对象的 属性 应用到组件中。因此,该Component的属性a 的值为,而a 的值为。 它将与以下内容相同: 短一点