Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中从一个位置复制到另一个位置的方法数量可变_Java_Javascript - Fatal编程技术网

在Java中从一个位置复制到另一个位置的方法数量可变

在Java中从一个位置复制到另一个位置的方法数量可变,java,javascript,Java,Javascript,我想知道将下面的JavaScript代码移植到Java的最有效方法是什么 // Copies a variable number of methods from source to target. rebind = function(target, source) { var z = 1, c = arguments.length, func; while (++z < c) { target[func = arguments[z]] = rebind(target,

我想知道将下面的JavaScript代码移植到Java的最有效方法是什么

// Copies a variable number of methods from source to target.
  rebind = function(target, source) {
  var z = 1, c = arguments.length, func;

  while (++z < c) {
    target[func = arguments[z]] = rebind(target, source, source[func]);
  }

  return target;
};

// method is a getter-setter:
// If passed with no arguments, gets the value.
// If passed with arguments, sets the value and returns target.
function rebind(target, source, func) {
  return function() {
    var value = func.apply(source, arguments);
    return value === source ? target : value;
  };
}
//将数量可变的方法从源复制到目标。
重新绑定=功能(目标、源){
var z=1,c=arguments.length,func;
而(++z
你没有

Java不像JavaScript那样是动态的;您“不能”将方法从一个地方复制到另一个地方

有很多方法可以假装你能做到,比如通过实现一个你可以委托给的对象,通过实现一个带有静态方法的接口(仅限JDK8+),破坏IDE功能的可怕字节码游戏,运行时类加载冒险,等等

除了在有限的、可怕的情况下,您也可以在编译或加载时完成这一切,而不是在运行时。

您不需要

Java不像JavaScript那样是动态的;您“不能”将方法从一个地方复制到另一个地方

有很多方法可以假装你能做到,比如通过实现一个你可以委托给的对象,通过实现一个带有静态方法的接口(仅限JDK8+),破坏IDE功能的可怕字节码游戏,运行时类加载冒险,等等


除非是在有限的、可怕的情况下,否则这一切都是在编译或加载时进行的,而不是在运行时。

请注意,Java和JavaScript是不同的语言。@IonuțG.Stan,我认为这正是问题所在:您将如何在Java/for Java中实现JavaScript所做的工作?该死,今天人们似乎在几秒钟内就把我打败了-P@UweB来吧快点@BigBug在运行时无法向对象添加新方法。您可以在运行时创建新类,但不能更改现有的类定义。所以我什么也看不出来。请注意,Java和JavaScript是不同的语言。@IonuțG.Stan,我想这正是问题所在:你将如何在Java中实现JavaScript所做的事情?该死,今天人们似乎在几秒钟内就把我打败了-P@UweB来吧快点@BigBug在运行时无法向对象添加新方法。您可以在运行时创建新类,但不能更改现有的类定义。所以我什么也看不出来。+1你可以动态地进行字节码操作来实现这一点,但几乎任何其他想法都比这更好,更容易维护。@PeterLawrey,差不多?!;)我故意使用了“吓人”这个词——在那里,那样做了,仍然会做噩梦。@BigBug有一些供应商提供了这种性质的解决方案,而且他们后来经常放弃支持,因为他们发现维护和支持这些解决方案太贵了。+1你可以动态地进行字节码操作来实现这一点,然而,几乎任何其他想法都比这更好,更容易维护。@PeterLawrey,差不多?!)我故意使用了“吓人”这个词——在那里,那样做了,仍然会做噩梦。@BigBug有一些供应商提供了这种性质的解决方案,而且他们后来经常放弃支持,因为他们发现维护和支持这些解决方案太贵了。