Array.slice может использоваться для копирования массива или части массива.. http://www.devguru.com/Technologies/Ecmascript/Quickref/Slice.html Это работало бы со строками и числами.. - менять струну в одном массиве не влияло бы на другой - но объекты все еще просто копируются ссылкой, таким образом, изменения в ссылочных объектах в одном массиве имели бы влияние на другом массиве.
Вот пример менеджера отмены JavaScript, который мог быть полезен для этого: http://www.ridgway.co.za/archive/2007/11/07/simple-javascript-undo-manager-for-dtos.aspx
До Java 8:
Ближайшими к делегатам Java являются интерфейсы с одним методом. Вы можете использовать анонимный внутренний класс.
interface StringFunc {
String func(String s);
}
void doSomething(StringFunc funk) {
System.out.println(funk.func("whatever"));
}
doSomething(new StringFunc() {
public String func(String s) {
return s + "asd";
}
});
doSomething(new StringFunc() {
public String func(String s) {
return new StringBuffer(s).reverse().toString();
}
});
Java 8 и выше:
Java 8 добавляет в язык лямбда-выражения.
doSomething((t) -> t + "asd");
doSomething((t) -> new StringBuilder(t).reverse().toString());
Ваш пример будет выглядеть так на Java с использованием аномальных внутренних классов:
interface Func {
String execute(String s);
}
public String doSomething(Func someDelegate) {
// Do something involving someDelegate.execute(String s)
}
doSomething(new Func() { public String execute(String s) { return s + "asd"; } });
doSomething(new Func() { public String execute(String s) { return new StringBuilder(s).reverse().toString(); } } });
Не совсем так, но в Java есть нечто подобное.
Это называется анонимными внутренними классами.
Позвольте мне привести Вот пример:
DoSomething(new Runnable() {
public void run() {
// "delegate" body
}
});
Это немного более подробно и требует интерфейса для реализации, но в остальном это почти то же самое
Можно ли передать код нравится в Яве? Я использую обработку фреймворк, имеющий довольно старый версия Java (в ней нет generics).
Поскольку вопрос задан об ответе, специфичном для обработки, прямого эквивалента не существует. Но Processing использует уровень языка Java 1.4, а Java 1.1 представила анонимные внутренние классы, которые являются грубым приближением.