You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让IntelliJ自定义Getter模板仅作用于集合类型字段

解决方法

要让自定义Getter模板仅应用于集合类型字段,只需在模板最外层添加类型判断逻辑,只对Java集合框架中的字段生成带空值处理的Getter,非集合字段则使用默认Getter逻辑。

修改后的完整模板

#if ($field.type.canonicalName.startsWith("java.util.Collection") || 
    $field.type.canonicalName.startsWith("java.util.List") || 
    $field.type.canonicalName.startsWith("java.util.Set"))
#if($field.modifierStatic)
static ##
#end
$field.type ##
#if($field.recordComponent)
  ${field.name}##
#else
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#if ($field.boolean && $field.primitive)
  is##
#else
  get##
#end
${name}##
#end
() {
    if (this.$field.name == null)
        return Collections.emptyList();   
    return $field.name;
}
#else
## 非集合类型字段使用默认Getter逻辑
#if($field.modifierStatic)
static ##
#end
$field.type ##
#if($field.recordComponent)
  ${field.name}##
#else
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#if ($field.boolean && $field.primitive)
  is##
#else
  get##
#end
${name}##
#end
() {
    return $field.name;
}
#end

关键说明

  1. 类型判断逻辑:通过$field.type.canonicalName获取字段的全限定类名,判断是否属于java.util.Collection、java.util.List或java.util.Set家族的类型,满足条件才触发自定义空值处理逻辑。
  2. 扩展集合类型:如果需要支持Queue、Deque等其他集合类型,只需在#if条件中追加对应的判断,比如$field.type.canonicalName.startsWith("java.util.Queue")。
  3. 非集合字段处理:else块中保留了常规Getter的生成逻辑,确保普通字段仍生成标准Getter;若你的IDE支持,也可以清空else块内容,让IDE自动使用内置默认模板。

内容的提问来源于stack exchange,提问作者logbasex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 03:24:39