10年 Java程序员,硬核人生!勇往直前,永不退缩!

欢迎围观我的git:https://github.com/R1310328554/spring_security_learn 寻找志同道合的有志于研究技术的朋友,关注本人微信公众号: 觉醒的码农,或Q群 165874185

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

阅读源码的时候,经常想要快速获取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函数签名 

posted on 2020-11-26 00:10  CanntBelieve  阅读(674)  评论(0编辑  收藏  举报