我正在查看 Hive 开源代码,发现了一个奇怪的构造函数调用:
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 的构造函数定义是接收三个 List 作为参数。
我的问题是:
public boolean next() throws SQLException {
return false;
}
在这种情况下,部分做什么?它不是作为参数的匿名调用,因为 3 个参数由它们自己完成,并且这个参数位于构造函数调用的主体中。
最佳答案
此方法返回 anonymous inner class 的实例。因此,这是方法中的类定义,也是该类中的方法定义。
从此方法返回的对象是在方法返回的位置定义的类的实例,该类是 HiveMetaDataResultSet
的子类,具有 next()
覆盖那里定义的next
实现。
关于java - 构造函数调用中的另一个方法定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16598395/