Open ctrueden opened 3 years ago
Interestingly, the following both work:
>>> jl[:]
<java object 'java.util.ArrayList.SubList'>
>>> print(jl[:])
[1, 3, 5, 7, 9]
>>> nl = list(pl)
>>> nl[:]
[1, 3, 5, 7, 9]
Probably would require copying the slice
logic from here:
@ctrueden what's the reason we still have JavaCollection
, JavaList
etc. in scyjava
? Is there additional functionality to what JPype brings?
what's the reason we still have JavaCollection, JavaList etc. in scyjava? Is there additional functionality to what JPype brings?
Lack of testing, and maintenance of the status quo. I'd be happy to get rid of them if we beef up unit tests to prove that JPype is strictly better. Or if we find advantages to keeping them, perhaps they could be slimmed down to extend some JPype data structures where feasible.
JPype collections should be fully supporting of Python collections API or at least as much as it is possible using Java's available functions. You can add additional functionality through customizers like the ones in _jcollection
.
For example, if you wish to add a toPython()
method to String[]
which returns a "list
of str
" just define the function in a class and add the JImplementationFor
decorator so it monkey patches it in. I don't generally add anything beyond the minimum to satisfy the Python contracts, but jpype does support multiple user installed customizer to any Java type so long as there are no implementation conflicts. In some projects I have "jdouble[]" overloaded with math operations.