2013-05-16 67 views
0

我期待在蜂巢開源代碼和跨一個奇怪的構造函數調用來:構造函數調用中的另一個方法定義?

public ResultSet getUDTs(String catalog, String schemaPattern, 
    String typeNamePattern, int[] types) throws SQLException { 

    return new HiveMetaDataResultSet(
     Arrays.asList("TYPE_CAT", "TYPE_SCHEM", "TYPE_NAME", "CLASS_NAME", "DATA_TYPE" 
       , "REMARKS", "BASE_TYPE") 
     , Arrays.asList("STRING", "STRING", "STRING", "STRING", "INT", "STRING", "INT") 
     , null) { 

    public boolean next() throws SQLException { 
     return false; 
    } 
}; 

}

爲HiveMetaDataResultSet的構造函數的定義是採取三個列表作爲參數。

我的問題是什麼是:

public boolean next() throws SQLException { 
    return false; 
} 

部分別在這種情況下?它不是一個匿名調用作爲參數,因爲這3個參數是由它自己完成的,而且這個參數是在構造函數調用的主體中。

回答

6

該方法返回一個anonymous inner class的實例。因此,這是方法中的類定義,以及該類中的方法定義。

從該方法返回的對象是類的一個實例,其定義右其中該方法返回,且類是HiveMetaDataResultSet一個亞類中,與next()重寫到右邊定義那裏next實現。

+0

謝謝你幫助我!我現在明白了。 HiveMetaDataResultSet類是一個抽象類,因此在實例化它時,需要提供空方法簽名的實際定義。 – Joe

相關問題