阅读源码的时候,经常想要快速获取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<T> { public static <T> com.alibaba.dubbo.common.extension.ExtensionLoader<T> getExtensionLoader(java.lang.Class<T>); public java.lang.String getExtensionName(T); public java.lang.String getExtensionName(java.lang.Class<?>); public java.util.List<T> getActivateExtension(com.alibaba.dubbo.common.URL, java.lang.String); public java.util.List<T> getActivateExtension(com.alibaba.dubbo.common.URL, java.lang.String[]); public java.util.List<T> getActivateExtension(com.alibaba.dubbo.common.URL, java.lang.String, java.lang.String); public java.util.List<T> getActivateExtension(com.alibaba.dubbo.common.URL, java.lang.String[], java.lang.String); public T getLoadedExtension(java.lang.String); public java.util.Set<java.lang.String> getLoadedExtensions(); public T getExtension(java.lang.String); public T getDefaultExtension(); public boolean hasExtension(java.lang.String); public java.util.Set<java.lang.String> getSupportedExtensions(); public java.lang.String getDefaultExtensionName(); public void addExtension(java.lang.String, java.lang.Class<?>); public void replaceExtension(java.lang.String, java.lang.Class<?>); public T getAdaptiveExtension(); public java.lang.String toString(); }
不过感觉还是不完美,因为其中的 类名全部是FQN, 影响阅读。
如何快速获取Java函数签名