in dubbo/codec/encoder.py [0:0]
def _get_class_name(self, _class):
"""
根据一个字段的类型得到其在Java中对应类的全限定名
转换规则:https://stackoverflow.com/a/3442100/4614538
:param _class:
:return:
"""
if isinstance(_class, bool): # bool类型的判断必须放在int类型判断的前面
return 'Z'
elif isinstance(_class, int):
if MIN_INT_32 <= _class <= MAX_INT_32:
return 'I'
else:
return 'J'
elif isinstance(_class, float):
return 'D'
elif isinstance(_class, (str, unicode)):
return 'L' + 'java/lang/String' + ';'
elif isinstance(_class, Object):
path = _class.get_path()
path = 'L' + path.replace('.', '/') + ';'
return path
elif isinstance(_class, list):
if len(_class) == 0:
raise HessianTypeError('Method parameter {} is a list but length is zero'.format(_class))
return '[' + self._get_class_name(_class[0])
else:
raise HessianTypeError('Unknown argument type: {0}'.format(_class))