Convert Python function to Java Function
It would be nice to support something like this:
>>> def fib(n): ... if n == 0 or n == 1: ... return 1; ... return fib(n - 1) + fib(n - 2) ... >>> import scyjava >>> jfib = scyjava.convert.to_java(fib) >>> print(type(jfib)) <class 'scyjava.convert._convert.FunctionFromPython'> >>>
Where FunctionFromPython is:
from jnius import PythonJavaClass, java_method class FunctionFromPython(PythonJavaClass): __javainterfaces__ = ['java/util/function/Function'] def __init__(self, function): self.function = function @java_method('(Ljava/lang/Object;)Ljava/lang/Object;') def apply(self, t): return self.function(t)
Then anything operating on a Java Function can accept a Python function with appropriate conversion. For example:
jlist = ij.py.to_java([5, 4, 3, 2, 1]) fibList = jlist.stream().map(jfib).toArray() print(f'{type(fibList)}') print(fibList)
Prints:
<class 'list'>
[8, 5, 3, 2, 1]
๐