Javassist注意点

2020-12-19  本文已影响0人  小小亭长

参数

$0: 代表当前类的上下文 this
$1,$2: 代表方法的参数例如:funA (int a,int b)中 a和b两个参数
$args: 指的是方法所有参数的数组类似Object[],多个参数的数组
$r: 指的是方法返回值的类型,主要用在类型的转型上
$w: 代表一个包装类型。主要用在转型上。比如:Integer i = ($w)5;如果该类型不是基本类型,则会忽略
$type: 返回结果值的类型

类的全路径

setBody()方法修改具体类中的方法时需要注意引入类的全路径
TextUtils => android.text.TextUtils
File => java.io.File

cMethod.setBody("{" +
                    "   String str2 = \"ss\"+ java.io.File.separator;" +
                    "    if (!android.text.TextUtils.isEmpty($1))\n" +
                    "      str2 = str2 + $1 " +
                    "    return str2;" +
                    "}");

泛型

需要<>这样的泛型标识时, 要使用 /* */ 将其包括起来

 List/*<String>*/ list = new Array/*<String>*/()

Tips: 如果方法结构超过一行需要使用花括号"{}"包裹

参考:
https://www.cnblogs.com/rickiyang/p/11336268.html

上一篇下一篇

猜你喜欢

热点阅读