private static String typesToSignature(
            Type returnType,
            Type[] paramTypes,
            boolean eraseGenerics) {
        StringBuilder buf = new StringBuilder();
        buf.append("(");
        for (Type paramType : paramTypes) {
            if (eraseGenerics) {
                buf.append(paramType.getErasureSignature());
            } else {
                buf.append(paramType.getSignature());
            }
        }
        buf.append(")");
        if (eraseGenerics) {
            buf.append(returnType.getErasureSignature());
        } else {
            buf.append(returnType.getSignature());
        }
        return buf.toString();
    }
This is a parser for custom aop pointcut expression.
<p>
Such as <pre>int android.util.Log.d(java.lang.String,java.lang.String)</pre>
plugin/src/main/groovy/com/didichuxing/tools/droidassist/spec/SourceSpec.java