我是一名初級開發人員,我熟悉java抽象類的理論以及它們如何具有構造函數來強制子類設置某些構造函數參數,以及抽象類本身如何不能實例化。但是,在我公司的測試框架中查看一些重構代碼時,我有些困惑。Java抽象類構造函數和新關鍵字
這個抽象類
public abstract class WaitForTestOutcomeThenAssert {
private long maxWait;
public WaitForTestOutcomeThenAssert(long maxWait) {
this.maxWait = maxWait;
}
public void waitForConditionThenAssert() {
...
...
}
protected abstract boolean checkCondition();
}
在這個類被引用:
public class DbWrapper extends AbstractDB {
@Override
public void assertColumnValueNotNull(final String schema, final String table, final String columnName, final String whereClause) {
new WaitForTestOutcomeThenAssert(this.assertionTemporalTolerance) {
@Override
public boolean checkCondition() {
return getColumnValue(schema, table, columnName, whereClause) != null;
}
}.waitForConditionThenAssert();
}
}
既然我們不能實例化一個抽象類,可有人請向我解釋不清楚發生什麼事,什麼被創建當我們在抽象類構造函數前面使用新的關鍵字?
這是[anonymous class](http://www.docstore.mik.ua/orelly/java-ent/jnut/ch03_12.htm)。基本上是一個沒有名字的內聯類。 – clcto 2014-09-25 15:31:23
[Java中如何使用匿名(內部)類?](http://stackoverflow.com/questions/355167/how-are-anonymous-inner-classes-used-in-java) – 2014-09-25 15:32:39
請參閱http ://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html#syntax-of-anonymous-classes – 2014-09-25 15:36:05