在Java中从一个位置复制到另一个位置的方法数量可变
我想知道将下面的JavaScript代码移植到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,
// 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有一些供应商提供了这种性质的解决方案,而且他们后来经常放弃支持,因为他们发现维护和支持这些解决方案太贵了。