Hi. (This may be of general interest)
[me on jython-dev answering to Janusch.Waclawczyk ]
> Maybe we should provide better support for this (?).
>
> [ Janusch Waclawczyk]
> > I wanted to create a new entry to a FAQ, but I failed:
> >
> > 3.8. How can I create 2-dimen. Java arrays from jython?
>
> The following works (not that intuitive):
> >>> from java.lang import String,Object
> >>> from jarray import array
> >>> a=array(["a","b"],String)
> >>> a
> array(['a', 'b'], java.lang.String)
> >>> # this is wrong:
> >>> b=array([a,a],type(a)) # or a.__class__
> >>> b
> array([array(['a', 'b'], java.lang.String), array(['a', 'b'],
> java.lang.String)], org.python.core.PyArray)
> >>> # this works !
> >>> b=array([a,a],Object.getClass(a))
> >>> b
> array([array(['a', 'b'], java.lang.String), array(['a', 'b'],
> java.lang.String)], [Ljava.lang.String;)
> >>>
> # [Ljava.lang.String; is the java internal name for (class) type
> # java.lang.String[]
> # b is a (jython side) java.lang.String[][]
>
I forgot to point out, that typically one does not need to work with
java arrays on jython side, lists do the job:
given:
public class Wrap {}
-----
public class Dummmy {
public static void dummy(Wrap[][] a) {}
}
all this works:
>>> import Dummy
>>> Dummy.dummy([])
>>> Dummy.dummy([[]])
>>> a,b,c,d = [ Wrap() for i in range(0,4) ]
>>> Dummy.dummy([[a,b]])
>>> Dummy.dummy([[a,b],[c,d]])
regards, Samuele Pedroni
|