diff --git a/stubgenj/_stubgenj.py b/stubgenj/_stubgenj.py index e23e0d385761c559d352c2e9a2ed8d5e48caf845..b55a1341e4bfdaa07c62b4701d187d7ede14ea12 100644 --- a/stubgenj/_stubgenj.py +++ b/stubgenj/_stubgenj.py @@ -697,7 +697,13 @@ def pythonType(javaType: Any, typeVars: Optional[List[TypeVarStr]] = None, isArg # Java arrays returned by JPype are of type "JArray", but JArray is not generic. To conserve the type information # of the elements, we map them to typing.List for the time being. elif isinstance(javaType, GenericArrayType) or javaType.isArray(): - return TypeStr('typing.List', [pythonType(javaArrayComponentType(javaType), typeVars)]) + elementType = javaArrayComponentType(javaType) + listType = TypeStr('typing.List', [pythonType(elementType, typeVars)]) + if isArgument and str(elementType) == 'byte': + # hack: JPype supports converting bytes/bytearray to byte[] but this is not advertised in hints... + return TypeStr('typing.Union', [listType, TypeStr('bytes'), TypeStr('bytearray')]) + else: + return listType else: return translateTypeName(str(javaType.getName()), implicitConversions=isArgument)