我不确定我在这里使用的词汇,如果我错了,请指正。
在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 的值为。 它将与以下内容相同: 短一点