是否有在Java方法“新”修饰符?(Is there a 'new' modifie

2019-07-30 04:21发布

是否有一个相当于C#的new在Java中修改?

我想使用它的单元测试 - 每init()方法应标,并最终使用@Before注解。 然后,JUnit的执行所有这些的init()方法。

我不想打扰想出了这些初始化的新名称()方法,而我肯定想将它们标记为最终确保它们不会覆盖海誓山盟(另一种模式是重写,并调用超。的init()从每一个init()方法)。

Answer 1:

一个常见的模式是让自己的“前”最后的方法,并创建子类保护(摘要)方法。

在超

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

protected void onBefore()  {

}

在子类

protected void onBefore() {
    // prepare the test fixture
}

这给你两全其美:

  • 公知的方法来在子类覆盖;
  • 首要的是可选的;
  • 超类方法不会被重写;
  • 当超一流决定, ,之前或之后的超一流决定客户方法被调用。

它有一个缺点 - 它关系到你一个超一流的。 不过,这可能不是一个问题,您的环境。



Answer 2:

不幸的是没有。 哎呀,前@Override有没有压倒一切的时候防范错别字甚至没有任何办法。

不能创建具有相同签名因为没有它覆盖该方法的超类方法的方法。 诚然,我尽量不这样做,即使在C#...

你有没有考虑使用initFooinitBar上课FooBar分别为(等)? 这是一个很简单的模式可循,并且将避免名称冲突。 有点难看,无可否认。



Answer 3:

Java没有一个等同于C# new运营商是

用来隐藏从基类构件继承的成员。

对于你想要做什么,为什么不创建一个基类,你的其他测试可以扩展,并创建一个abstract命名方法init()标有@Before在基类)? 这迫使所有子类,以提供一个init()方法。



文章来源: Is there a 'new' modifier for methods in Java?