【发布时间】:2023-04-02 16:21:01
【问题描述】:
我正在尝试评论一个具体的陈述。
- 我的第一种方法是在 case 语句是“表达式语句”且表达式是特定的“方法调用表达式”时返回注释。
new ModifierVisitor<Object>() {
public Visitable visit(ExpressionStmt expStmt, Object arg) {
Expression exp = expStmt.getExpression();
if (exp.isMethodCallExpr()) {
// My other logic goes here
return new LineComment(expStmt.toString());
}
}
}
但在将单元转储回字符串时失败。
java.lang.ClassCastException: com.github.javaparser.ast.comments.LineComment cannot be cast to com.github.javaparser.ast.stmt.Statement
at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.visit(DefaultPrettyPrinterVisitor.java:1329)
at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.visit(DefaultPrettyPrinterVisitor.java:163)
at com.github.javaparser.ast.stmt.BlockStmt.accept(BlockStmt.java:76)
at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.visit(DefaultPrettyPrinterVisitor.java:1220)
at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.visit(DefaultPrettyPrinterVisitor.java:163)
at com.github.javaparser.ast.body.MethodDeclaration.accept(MethodDeclaration.java:104)
at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.printMembers(DefaultPrettyPrinterVisitor.java:190)
at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.visit(DefaultPrettyPrinterVisitor.java:419)
at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.visit(DefaultPrettyPrinterVisitor.java:163)
at com.github.javaparser.ast.body.ClassOrInterfaceDeclaration.accept(ClassOrInterfaceDeclaration.java:98)
at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.visit(DefaultPrettyPrinterVisitor.java:325)
at com.github.javaparser.printer.DefaultPrettyPrinterVisitor.visit(DefaultPrettyPrinterVisitor.java:163)
at com.github.javaparser.ast.CompilationUnit.accept(CompilationUnit.java:133)
at com.github.javaparser.printer.DefaultPrettyPrinter.print(DefaultPrettyPrinter.java:104)
at com.github.javaparser.ast.Node.toString(Node.java:320)
-
因为它表明您可以用另一个语句替换“语句”,所以我尝试了另一种方法来替换语句并用“空语句”替换。它对我有用,但输出看起来不太好,因为它留下了额外的 ';'在注释行之后。
-
第三次我尝试更深入,而不是替换语句,而是尝试用注释替换表达式。正如SO - Javaparser comment expression 中提到的那样,这也失败了。
知道如何解决这个问题吗?
【问题讨论】:
-
@Loggable。 logger.log(评论)。
-
没听懂@OleksiiKyslytsyn .. 你能解释一下吗?
-
对 Java 语言规范的快速浏览表明没有“注释语句”之类的东西 = cmets 在词法分析器中被删除。大概这个解析器坚持这一点。
-
@VinodPahuja desc 选择“是的,我可以”。通过外部文件。通过日志文件。通过记录器。
标签: javaparser