是否有相当于 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/