可能重复:
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?
答案 0 :(得分:9)
@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起)