Java 如何为Netbeans编写提示?

Java 如何为Netbeans编写提示?,java,netbeans,netbeans-platform,Java,Netbeans,Netbeans Platform,我到处都找过了,唯一能找到的例子就是标记JOptionPane.show并删除它。这对我没有多大帮助。注意:这会给出一个匹配某个方法的提示,但是当你完成后,你应该能够匹配更多(比如学习正则表达式) 这很难做到,也很难弄明白。。。我假设你已经看过了教程。通过此处的说明创建提示后,您现在有了一个基本的提示实现: @Hint(displayName = "#DN_MainCallHint", description = "#DESC_MainCallHint", category =

我到处都找过了,唯一能找到的例子就是标记JOptionPane.show并删除它。这对我没有多大帮助。

注意:这会给出一个匹配某个方法的提示,但是当你完成后,你应该能够匹配更多(比如学习正则表达式)

这很难做到,也很难弄明白。。。我假设你已经看过了教程。通过此处的说明创建提示后,您现在有了一个基本的提示实现:

@Hint(displayName = "#DN_MainCallHint", description = "#DESC_MainCallHint",
        category = "general")
        @Messages({
    "DN_MainCallHint=MainCall",
    "DESC_MainCallHint=Warns the user when they are manually calling public "
            + "static void main"
})
public class MainCallHint {
    @TriggerPattern(value = "$str.equals(\"\")", //Specify a pattern as needed
            constraints = @ConstraintVariableType(variable = "$str", type
                    = "java.lang.String"))
    @Messages("ERR_MainCallHint=Directly calling main! Did you mean to do that?")
    public static ErrorDescription computeWarning(HintContext ctx) {
        return ErrorDescriptionFactory.forName(ctx, ctx.getPath(), Bundle.
                ERR_MainCallHint());
    }
}
我遇到的主要问题是
@TriggerPattern.value
。如果要匹配方法调用,可以将其设置为如下所示:

"$caller.method($arg1, $arg2)"
"test.HintTest.main($args)"
@TriggerPattern(value = "test.HintTest.main($args)", //Specify a pattern as needed
            constraints = @ConstraintVariableType(variable = "$args", type
                    = "java.lang.String[]"))
public static ErrorDescription computeWarning(HintContext ctx) {
    Fix fix = JavaFixUtilities.rewriteFix(ctx, "Use notMain instead",
            ctx.getPath(), "test.HintTest.notMain($args)");
    return ErrorDescriptionFactory.forName(ctx, ctx.getPath(), Bundle.
            ERR_MainCallHint(), fix);
}
并且可以为每个变量设置类型约束。需要注意的一件重要事情是:如果您试图匹配特定类型的静态方法,请使用该类的FQN,否则它将无法与参数一起使用。因此,请使用类似这样的方法:

"$caller.method($arg1, $arg2)"
"test.HintTest.main($args)"
@TriggerPattern(value = "test.HintTest.main($args)", //Specify a pattern as needed
            constraints = @ConstraintVariableType(variable = "$args", type
                    = "java.lang.String[]"))
public static ErrorDescription computeWarning(HintContext ctx) {
    Fix fix = JavaFixUtilities.rewriteFix(ctx, "Use notMain instead",
            ctx.getPath(), "test.HintTest.notMain($args)");
    return ErrorDescriptionFactory.forName(ctx, ctx.getPath(), Bundle.
            ERR_MainCallHint(), fix);
}
导致
@TriggerPattern
位如下所示:

"$caller.method($arg1, $arg2)"
"test.HintTest.main($args)"
@TriggerPattern(value = "test.HintTest.main($args)", //Specify a pattern as needed
            constraints = @ConstraintVariableType(variable = "$args", type
                    = "java.lang.String[]"))
public static ErrorDescription computeWarning(HintContext ctx) {
    Fix fix = JavaFixUtilities.rewriteFix(ctx, "Use notMain instead",
            ctx.getPath(), "test.HintTest.notMain($args)");
    return ErrorDescriptionFactory.forName(ctx, ctx.getPath(), Bundle.
            ERR_MainCallHint(), fix);
}
你会发现:

现在,本教程展示了一种非常麻烦的方法来实现修复。如果您只需要做一个简单的替换,那么可以这样做:

"$caller.method($arg1, $arg2)"
"test.HintTest.main($args)"
@TriggerPattern(value = "test.HintTest.main($args)", //Specify a pattern as needed
            constraints = @ConstraintVariableType(variable = "$args", type
                    = "java.lang.String[]"))
public static ErrorDescription computeWarning(HintContext ctx) {
    Fix fix = JavaFixUtilities.rewriteFix(ctx, "Use notMain instead",
            ctx.getPath(), "test.HintTest.notMain($args)");
    return ErrorDescriptionFactory.forName(ctx, ctx.getPath(), Bundle.
            ERR_MainCallHint(), fix);
}

注意:用于
rewriteFix
的变量必须与您在
@TriggerPattern
中使用的变量相同,否则它们将被解释为文字。

最好将上述答案编辑到您的问题中。不确定您的意思。你的意思是把答案放在我的问题里吗?哦,你是说Netbeans网站上的教程吗?