Error cannot call instance method without an instance
现象
对于Java的类java.util.HashMap
的put
函数:
public java.lang.Object java.util.HashMap.put(java.lang.Object,java.lang.Object)
去hook:
var func_HashMap_put = cls_HashMap.put('java.lang.Object', 'java.lang.Object')
但报错:
Error: put: cannot call instance method without an instance
原因
此处语法错误 == 笔误,写成:重载overload函数的写法(加上函数参数类型)
cls_HashMap.put('java.lang.Object', 'java.lang.Object')
但该写法其实是函数调用的写法
而如果去调用函数的话,的确需要:Instance实例
但是此处是hook,不是函数调用
此处只是需要去hook该函数,所以只需要
解决办法
只写出函数名(而无需额外的,类似overload的参数类型)
具体写法
var func_HashMap_put = cls_HashMap.put