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)