Придется перенести небольшой фрагмент кода с JavaScript на JAVA:
var N = 3;
var w = 8, h = 8;
var matrix = [
[1, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 0],
[1, 1, 1, 1, 1, 1, 1, 1]
];
//[1, 1, 1, 1, 1, 1, 0, 1, 1]
console.info(complexFunction(2, 1));
//first function
function simpleFunction(f_) {
var out = new Array(N * N);
for (var y = 0; y < N; y++) {
for (var x = 0; x < N; x++) {
out[x + y * N] = f_(x, y);
}
}
return out;
};
//second function
function complexFunction(x_, y_) {
return simpleFunction(function (dx, dy) { return matrix[(x + dx) % w][(y + dy) % h]; });
};
Безуспешно экспериментировали с Callable. В идеале перенесенный результат должен иметь ту же структуру, что и исходный код JavaScript.
Если вы используете Java 8 или выше, вы можете использовать функциональные интерфейсы.
Что за вопрос?
Не ждите, что мы сделаем этот перевод за вас. Начните себя, а затем, когда вы застряли, попросите помочь с этим.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


К сожалению, мне приходится использовать Java 7, в которой нет лямбд, так что пришлось все сделать как можно проще:
Integer[] complexFunction(int dx_, int dy_){
Integer[] out = new Integer[N * N];
for (Integer y = 0; y < N; y++) {
for (Integer x = 0; x < N; x++) {
out[x + y * N] = matrix[(x + dx_) % w][(y + dy_) % h];
}
}
return out;
}
Этот ответ никому, кроме вас, не нужен. Этот вопрос следует просто удалить.
Вам нужно опубликовать свой Java-код и объяснить, что вы пытаетесь сделать и где у вас возникают проблемы. Код Javascript на самом деле не важен для вопроса «Как передать функцию в качестве ссылки в Java»