Java中的方法是否有'new'修饰符?

rip*_*234 2 java inheritance junit

在Java中是否有与C#的new修饰符等价的东西?

我想将它用于单元测试 - 每个init()方法都应标记为final并使用@Before进行注释.然后,jUnit执行所有这些init()方法.

我不想打扰每个init()方法的新名称,我肯定想把它们标记为final,以确保它们不会覆盖彼此(另一种模式是覆盖并调用super.每个init()方法的init()).

Rob*_*anu 5

一种常见的模式是使您自己的'before'方法最终,并为子类创建受保护(抽象)方法.

在超类中

@Before
public final void before() {
   onBefore();
}

protected void onBefore()  {

}
Run Code Online (Sandbox Code Playgroud)

在子类中

protected void onBefore() {
    // prepare the test fixture
}
Run Code Online (Sandbox Code Playgroud)

这为您提供了两全其美的优势:

  • 一种众所周知的方法来覆盖子类;
  • 覆盖是可选的;
  • 超类方法永远不会被覆盖;
  • 当超类决定时,在超类决定之前或之后,调用客户端方法.

它确实有一个缺点 - 它将你绑定到一个超级班级.不过,这可能不是您的环境的问题.