def to_array(obj, type = None, primitive = True): """Convert Python list to Java array. Args: obj(list): Original data. type(str): array type 'b' = byte, 'h' = short, 'i' = int, 'l' = long, 'f' = float, 'd' = double, 'c' = char, 'z' = boolean, 's' = String, 'o' = Object Returns: Java array. """ if obj is None: return None if type is None: type = 'o' enforceArrayType=False else: enforceArrayType=True if type[0] == '[': type = type[1:] element_type = ScriptUtils.getPrimitiveType(type) if primitive else ScriptUtils.getType(type) def convert_1d_array(obj): if type == 'c': ret = reflect.Array.newInstance(element_type,len(obj)) for i in range(len(obj)): ret[i] = chr(obj[i]) return ret if type == 'z': ret = reflect.Array.newInstance(element_type,len(obj)) for i in range(len(obj)): ret[i]= True if obj[i] else False return ret if type == 'o': ret = reflect.Array.newInstance(element_type,len(obj)) for i in range(len(obj)): ret[i]= obj[i] return ret if type == "s": return Convert.toStringArray(obj) if primitive: ret = Convert.wrapperArrayToPrimitiveArray(obj, element_type) else: ret = reflect.Array.newInstance(element_type,len(obj)) for i in range(len(obj)): ret[i] = Convert.toType(obj[i],element_type) return ret if is_array(obj): if enforceArrayType: if Arr.getComponentType(obj) != element_type: rank = Arr.getRank(obj) if (rank== 1): obj=convert_1d_array(obj) elif (rank>1): pars, aux = [element_type], obj for i in range(rank): pars.append(len(aux)) aux = aux[0] #TODO: OVERLOADING BUG #ret = reflect.Array.newInstance(*pars) ret = Arr.newInstance(*pars) for i in range(len(obj)): ret[i]=to_array(obj[i], type) obj = ret elif is_list(obj): if type=='o': ret = reflect.Array.newInstance(element_type, len(obj)) for i in range (len(obj)): if is_list(obj[i]) or is_array(obj[i]): ret[i] = to_array(obj[i],type) else: ret[i] = obj[i] obj=ret elif len(obj)>0 and (is_list(obj[0]) or is_array(obj[0])): pars, aux = [element_type], obj while len(aux)>0 and (is_list(aux[0]) or is_array(aux[0])): pars.append(len(aux)) aux = aux[0] pars.append(0) #ret = reflect.Array.newInstance(*pars) ret = Arr.newInstance(*pars) for i in range(len(obj)): ret[i]=to_array(obj[i], type) obj=ret else: obj= convert_1d_array(obj) return obj import random ret = [] for i in range (10): ret.append(random.random()) try: a1 = to_array(ret,'d') print (a1) except: traceback.print_exc()