Java中的方法是否有“新”修饰符? - java

Java中是否有与C#'s new修饰符等效的符号?

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

我不想为每个init()方法都想出新的名字,我绝对想将它们标记为最终名称,以确保它们不会彼此覆盖(另一种模式是覆盖并调用super。每个init()方法的init())。

java大神给出的解决方案

一种常见的模式是使自己的“之前”方法最终化,并为子类创建受保护(抽象)的方法。

在超类中

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

protected void onBefore()  {

}

在子类中

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

这使您两全其美:

在子类中重写的众所周知的方法;
覆盖是可选的;
超类方法永远不会被覆盖;
当超类决定时,即在超类决定之前或之后,将调用client方法。

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

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

如何修改休眠的SQL查询? - java

我有点好奇,有没有办法修改hibernate的核心,以便我可以自定义生成的SQL query。例如,在生成的查询中添加功能以使用connect by prior(oracle)或我要自定义的任何其他子句。 java大神给出的解决方案 起初,这样的问题总是在我心中敲响警钟。你被警告了...AFAIK,hibernate使用所谓的dialects进行特定的优化。…

无法在Eclipse中调试条件中的最后一条语句? - java

public static void main(String args[]) { if(true) { int x= 3*44+7; //int y=1; } } 我将问题缩小为这个简单的语句,我真的不知道如何在Eclipse调试器中访问此变量。它总是在以下情况下发生:在if条件中声明变量,try-catch语句,循环等,并且偶然地是该块中的最后一个语句。为…

用Java构建大批量数据处理工具 - java

Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。 3年前关闭。 Improve this question 我正在尝试使用Java构建ETL工具。 ETL工具用于对大量数据(关系型和其他类型)进行批量读取,…

用Java封装对象? - java

private中的Java提供类级别的封装。可以封装一个对象吗?还是这样做徒劳?例如,如果我们将一个类定义为 public class Person { private String ssn; private ArrayList<Person> friends = new ArrayList<Person>(); public voi…