gpt4 book ai didi

java - 为什么 RowMapper 内部类是静态的?

转载 作者:行者123 更新时间:2023-12-01 23:00:14 27 4
gpt4 key购买 nike

Spring 文档指出:

"If the last two snippets of code actually existed in the same application, it would make sense to remove the duplication present in the two RowMapper anonymous inner classes, and extract them out into a single class (typically a static inner class) that can then be referenced by DAO methods as needed."

本例中的“最后两个片段”是数据库方法,它们使用两个具有相同逻辑的行映射器来映射其调用结果。

我的问题是为什么内部 RowMapper 类需要是静态的......或者它是否需要?我的 DAO 中有一个自动连接的服务方法,用于查找常量值,例如:

//Returns "USA"
lookupService.getCountryForCountryId(1)

在父类中 Autowiring 。

更改我的 RowMapper 定义:

public static final RowMapper<Order> BASIC_SHALLOW_MAPPER = new RowMapper<Order>() {...}

public final RowMapper<Order> BASIC_SHALLOW_MAPPER = new RowMapper<Order>() {
public Order mapRow(ResultSet rs, int rowNum) {
...
lookupService.getCountryForId(rs.getInt("country_id"));
...
}
}

...允许我在行映射器内部转换该数据,如上所示。这种方法有什么缺点吗?

最佳答案

行映射器类不必是静态的。但大多数情况下,它不需要访问父类的字段,在这些情况下,将其设置为静态会更有效。

关于java - 为什么 RowMapper 内部类是静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23477659/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com