阅读源码的时候,经常想要快速获取Java类、方法、属性的签名 。 本能想到了javap。但是直接执行javap 是不行的,因为类位于jar。
不想太麻烦,也不想额外使用什么插件(也不知道有没有), 搜索半天也没有找到好的解决方案,貌似大家都不关心这个事情..
后面参考 https://zhidao.baidu.com/question/2058564863241638227.html 摸索半天搞了出来,其实很简单,新建一个外部工具即可,如下:
其中arguments 为 -classpath "$Classpath$" -public $FileClass$, Classpath需要引号是因为 Classpath可能有空格等字符。working directory 为 $ProjectFileDir$。
我另外还增加了快捷键:
结果如下:
public class com.alibaba.dubbo.common.extension.ExtensionLoader{public static com.alibaba.dubbo.common.extension.ExtensionLoader getExtensionLoader(java.lang.Class);publicjava.lang.String getExtensionName(T);public java.lang.String getExtensionName(java.lang.Class>);public java.util.ListgetActivateExtension(com.alibaba.dubbo.common.URL, java.lang.String);public java.util.ListgetActivateExtension(com.alibaba.dubbo.common.URL, java.lang.String[]);public java.util.ListgetActivateExtension(com.alibaba.dubbo.common.URL, java.lang.String, java.lang.String);public java.util.ListgetActivateExtension(com.alibaba.dubbo.common.URL, java.lang.String[], java.lang.String);publicT getLoadedExtension(java.lang.String);public java.util.SetgetLoadedExtensions();publicT getExtension(java.lang.String);publicT getDefaultExtension();publicboolean hasExtension(java.lang.String);public java.util.SetgetSupportedExtensions();publicjava.lang.String getDefaultExtensionName();public void addExtension(java.lang.String, java.lang.Class>);public void replaceExtension(java.lang.String, java.lang.Class>);publicT getAdaptiveExtension();publicjava.lang.String toString();
}
不过感觉还是不完美,因为其中的 类名全部是FQN, 影响阅读。
如何快速获取Java函数签名