Функциональное программирование - это про применение последовательности функций к аргументам (и про функции высшего порядка). Вообще, если коснулись функционального программирования и списков-массивов, то начинайте смотреть StreamAPI, это вот что ни на есть самая функциональщина в джаве. Вообще в джаве функциональное программирование не так чтобы очень хорошее, если эта тема интересна - идите в Котлин (или Скала, но Скала практически не применяется в промышленном программировании).
Вашу задачу можно решить, например, вот так:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Arrays.stream(args).map(Main::reverse).forEach(System.out::println);
}
private static String reverse(String s) {
final StringBuilder result = new StringBuilder();
for (char c : s.toCharArray()) {
result.insert(0, c);
}
return result.toString();
}
}
Тут интерфейс используется неявно (в функции map), туда подставлена другая функция - reverse. Если хочется - можно обернуть её в интерфейс.