Skip to content

Convert Python function to Java Function#17

@ctrueden

Description

@ctrueden

It would be nice to support something like this:

>>>deffib(n): ... ifn==0orn==1: ... return1; ... returnfib(n-1) +fib(n-2) ... >>>importscyjava>>>jfib=scyjava.convert.to_java(fib) >>>print(type(jfib)) <class'scyjava.convert._convert.FunctionFromPython'>>>>

Where FunctionFromPython is:

fromjniusimportPythonJavaClass, java_methodclassFunctionFromPython(PythonJavaClass): __javainterfaces__= ['java/util/function/Function'] def__init__(self, function): self.function=function@java_method('(Ljava/lang/Object;)Ljava/lang/Object;')defapply(self, t): returnself.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] 

😎

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions