java - 构造函数调用中的另一个方法定义?

标签 java constructor

我正在查看 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/

相关文章:

java - @FXML注入(inject)中的空指针异常

java - org.springframework.web.servlet.PageNotFound noHandlerFound警告: No mapping found for HTTP request with URI

java - eclipse如何导入类

java - 什么是对象/关系不匹配

c++ - 使用映射第二个参数的类构造函数初始化

java - Scala:在 Scala 中使用带有子类的 Java 构造函数

java - Android WallpaperManager 方法 "soft-bricking"用户的手机并导致设备无响应

c++ - 获取错误 C++ 即使拥有所有构造函数也没有匹配的调用函数

vb.net - 构造函数内的构造函数

c++ - 改变 C++ 类构造函数参数的数量