java - Java中的方法有 'new'修饰符吗?

标签 java inheritance junit

是否有相当于 C#'s new 的值Java 中的修饰符?

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

我不想为每个 init() 方法想出新名称,而且我绝对想将它们标记为 Final 以确保它们不会互相覆盖(另一种模式是覆盖并从每个 init() 方法调用 super.init())。

最佳答案

一种常见的模式是使您自己的“之前”方法成为 final方法,并为子类创建 protected (抽象)方法。

在父类(super class)中

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

protected void onBefore()  {

}

在子类中

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

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

  • 在子类中重写的众所周知的方法;
  • 覆盖是可选的;
  • 父类(super class)方法永远不会被重写;
  • 当父类(super class)做出决定时,在父类(super class)作出决定之前或之后调用客户端方法。

它确实有一个缺点 - 它将你与一个父类(super class)联系在一起。不过,这对您的环境来说可能不是问题。

关于java - Java中的方法有 'new'修饰符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1125269/

相关文章:

java - 使用javah生成头文件

java - 有没有办法在文本 block 中查找位置名称

java - 检查对象是否是通用父类的实例

Java 继承 - 为 MVP 模式构建 BaseView

java - 测试私有(private)变量 - 总是不好的做法?

Java - 绘制正弦波

java - 如何在没有 DOM 的情况下在 java 中读取 XML?

c# - 从基类 C# 调用子类方法

java - 关于编写一个在项目其他模块中执行测试类的 Java 类的建议

java - JUnitParamsRunner 与输入文件 - 字符串参数问题