我想为我一直在写的类写一些外部文档。我想给出一个可用方法的简明清单,基本上与IntelliJ给出的“ Structure”视图相对应。我什至可以从视图中复制和粘贴,但是仅复制方法名称,而无需方法签名或返回值。
是否可以通过IntelliJ快速创建类的结构概述以用于文档编制?
谢谢!
编辑:看来我还没有完全清楚自己,对此我深表歉意。具体来说,我想记录以下课程:https://github.com/JULIELab/jcore-base/blob/2.3.0-SNAPSHOT/jcore-utilities/src/main/java/de/julielab/jcore/utility/JCoReAnnotationTools.java
这是IntelliJ的“ Structure”面板的屏幕截图,@ Tiru也指出了该截图。以纯文本形式获取确切信息的最简单方法是什么?
JavaDoc是可能的,但相比起来比较冗长,需要大量的后处理。由于IntelliJ已经在创建这种简洁的概述,所以我希望有可能将其提取为文本。
答案 0 :(得分:0)
是的,您可以使用快捷方式(cmd + F12 / ctrl + F12)轻松获取方法列表。这将为您提供方法和类变量的列表。您可以在文档中选择并使用它。
例如:
另一种方法是通过“侧边”窗格中的“结构”:
或通过图表:
示例图:
答案 1 :(得分:0)
您可以通过反射自己完成此操作。我做了一个开始。将其写入文件很容易。我将其留给读者练习。
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.stream.Collectors;
class Scratch {
public static void main(String[] args) {
StringBuilder stringMethods = findMethods(String.class);
System.out.println(stringMethods);
}
private static StringBuilder findMethods(Class clas) {
StringBuilder builder = new StringBuilder();
Method[] methods = clas.getMethods();
for (Method method : methods) {
builder.append(" ")
.append(method.getName())
.append("(");
Class<?>[] parameterTypes = method.getParameterTypes();
for (int i = 0; i < parameterTypes.length; i++) {
Class<?> aClass = parameterTypes[i];
builder.append(aClass.getSimpleName());
if (i < parameterTypes.length - 1) {
builder.append(", ");
}
}
builder.append(")");
builder.append(": ")
.append(method.getReturnType().equals(Void.class) ? "void" : method.getReturnType().getSimpleName())
.append(" ");
if (method.getExceptionTypes().length > 0) {
builder.append(" throws ")
.append(Arrays.stream(method.getExceptionTypes()).map(Class::getSimpleName).collect(Collectors.joining(", ")));
}
builder.append(System.lineSeparator());
}
return builder;
}
}
答案 2 :(得分:0)
我不想成为这样说的人,但是...
Javadoc是唯一的 可移植对象,它将可靠地生成您要查找的内容。
值得注意的是,您没有自己编写任何Javadoc;您只需invoke the tool,它就会生成您想要的内容。
在Java的较新版本中,生成的Javadoc也可以搜索。