@Override在这个java代码中意味着什么?

时间:2012-01-16 07:33:13

标签: java

  

可能重复:
  When do you use Java's @Override annotation and why?
  Java, What does @Override mean?

我正在查看 Drools Planner 示例源代码,我遇到了这样的代码:

@Override
protected Solver createSolver() {
    XmlSolverConfigurer configurer = new XmlSolverConfigurer();
    configurer.configure(SOLVER_CONFIG);
    return configurer.buildSolver();
}

protected Solver createSolverByApi() {
    // Not recommended! It is highly recommended to use XmlSolverConfigurer with an XML configuration instead.
    SolverConfig solverConfig = new SolverConfig();

    solverConfig.setSolutionClass(NQueens.class);
    .....TRUNCATED....
    solverPhaseConfigList.add(localSearchSolverPhaseConfig);
    solverConfig.setSolverPhaseConfigList(solverPhaseConfigList);
    return solverConfig.buildSolver();
}

据我所知,createSolver()createSolverByApi()应该在您明确调用它们时返回Solver对象。

@Override在这里意味着什么? @ 一词的一般含义是什么?


编辑:我非常糟糕;我无意中重复了What does @Override mean?

5 个答案:

答案 0 :(得分:9)

@Java Annotations

@Override表示该方法覆盖了父类(在本例中为createSolver)。

@Override的{​​{3}}州:

  

表示方法声明旨在覆盖方法   在超类中声明。

此注释对于编译时检查非常有用,可以验证您覆盖的方法是否有效(正确覆盖)。

答案 1 :(得分:3)

请参阅Java tutorial about annotations,以及“编译器使用的注释”部分。来自相关部分的快速复制粘贴

  

@Override- @Override注释通知编译器该元素是要覆盖超类中声明的元素(覆盖方法将在标题为“接口和继承”的课程中讨论)。

答案 2 :(得分:2)

这称为Annotation。它实际上没有编译成特殊代码,但它有助于避免错误:实质上,它表明方法覆盖 superclass的方法。没有此注释可能会导致警告,拥有此注释但没有具有相同注释的方法的超类甚至是错误

这可以避免重构错误:如果重命名superclass中的方法,而不重写,则会出错。

答案 3 :(得分:0)

这是java注释,在你的情况下,你会在方法上面使用@Override来确保你覆盖超类方法,如果你使用它并且该方法不在超类中,因为你键入它名称错误,例如在编译时会发生错误。

答案 4 :(得分:0)

我想补充一下: 在接口中声明的superClass或方法中声明(自Java 6起)