IntelliJ IDEA 2025.1 Help

toString() 生成设置对话框

代码 | 生成 - toString() - 设置

设置标签页

条目

描述

在代码生成中使用完全限定类名 ($classname)

如果选中此复选框,转储的类名将包括它们的包名。 ($classname 变量在 Velocity 模板)

在代码生成中启用 getter ($method)

如果选中此复选框,代码生成器将在 Velocity Macro Language 中拥有 $methods 变量。

示例 2

移动文本光标到生成的方法

如果选中此复选框,则文本光标将滚动到生成的 toString() 方法。

对元素进行排序

如果选中此复选框,则成员将按照选择的顺序(升序或降序)排序。

当方法已存在时

在本节中,选择默认的冲突解决策略:

  • 询问 :选择此选项以请求确认是否已有 toString() 方法。

    IntelliJ IDEA 显示对话框 替换现有的 toString 方法

    答案 将会生成新的 toString() 方法替换现有的方法;答案 将会创建一个重复的方法。

  • 替换现有 :选择此选项以自动替换现有的 toString() 代码。

  • 生成重复方法 :选择此选项来创建 toString() 方法的副本;这样做之后,新方法将命名为 toString() ;现有代码不会被擦除。

在哪里插入?

在本节中,选择插入生成的 toString() 方法的位置。 可能的选项有:

  • 文本光标处.

  • 在 equals() 和 hashCode() 之后 :生成的 toString() 方法将插入到 Java 类中的 equals/hashCode 之后(如果存在的话);否则,新方法将插入到当前光标位置。

  • 类的末尾 :生成的 toString() 方法将作为最后一个方法插入。

排除

在本节中,选中元素旁的复选框以将其排除在 toString() 方法生成之外:

  • 排除常量字段 :如果选中此复选框,则任何常量将不成为代码生成器可用字段的一部分。

  • 排除静态字段 :如果选中此复选框,则具有静态修饰符的任何字段都不会成为代码生成器的可用字段。

  • 排除瞬态字段 :如果选中此复选框,则带有 transient 修饰符的任何字段都不会成为代码生成器的可用字段的一部分。

  • 排除枚举字段 :如果选择该复选框,则任何类型为 enum (JDK1.5)的字段将不会成为代码生成器的可用字段。

  • 排除记录器字段 (Log4j,JDK Logging,Jakarta Common Logging):如果选中此复选框,则任何 Log4j Logger、Java JDK Logger 或 Jakarta Commons Logger 类型的字段将不会成为代码生成器的可用字段。

  • 通过名称排除字段(正则表达式) :如果选中此复选框,则 IntelliJ IDEA 将对字段名进行正则表达式匹配。 如果结果是 true ,那么该字段将不会成为代码生成器可用字段的一部分。

  • 通过类型名称(正则表达式)排除字段 :如果选中此复选框,IntelliJ IDEA 将对字段类型名称(完全限定名称)执行正则表达式匹配。 如果结果是 true ,该字段将不会成为代码生成器可用字段的一部分。

  • 按名称排除方法(正则表达式) :如果选择此复选框,则 IntelliJ IDEA 会对方法名称执行正则表达式匹配。 如果结果是 true ,该方法将不属于代码生成器的可用方法。

  • 排除返回类型名称的 方法(正则表达式) :如果选择了此复选框,则 IntelliJ IDEA 将对方法返回类型名称(完全限定名称)执行正则表达式匹配。 如果结果是 true ,该方法将不属于代码生成器的可用方法。

模板 选项卡

使用此页面查看和管理将用于 toString() 方法生成的Velocity模板列表。

模板工具栏

条目

描述

点击此按钮以创建一个新条目到可用模板列表。 当新条目被添加时,创建相应的模板。

点击此按钮即可从可用模式列表中删除所选的用户创建的条目。 请注意,预定义模板无法删除。

点击此按钮以创建现有模板的副本。

用于 Velocity 模板的变量

变量

返回

描述

$classname

String

类名(如果在设置中选择,可以是限定的类名)。

$FQClassname

String

@deprecated (请使用 $class.qualifiedName)——类的完全限定名

$fields

java.util.List

FieldElement 对象列表

$methods

java.util.List

方法元素对象列表

$members

java.util.List

字段元素 和 方法元素 对象的列表

$member

Element

元素对象

$member.accessor

String

字段或方法的访问器。 对于字段,它是 $field.name ,对于方法,它是 $method.methodName

$member.typeName

String

类型的类名(Object,String,List等)

$member.typeQualifiedName

String

类型的限定类名(java.lang.Object、java.lang.String、java.util.List 等)

$member.array

布尔

检查类型是否为数组类型(原始数组或对象数组)。

$member.primitiveArray

布尔

检查类型是否为基本数组类型(int[]、short[]、float[] 等)

$member.objectArray

布尔

检查类型是否为对象数组类型(Object[]、String[]等)。

$member.stringArray

布尔

检查类型是否为字符串数组类型 (String[])

$member.collection

布尔

检查类型是否可从 java.util.Collection 赋值。

$member.list

布尔

检查类型是否可从 java.util.List 分配

$member.map

布尔

检查类型是否可从 java.util.Map 分配

$member.set

布尔

检查类型是否可以从 java.util.Set 分配

$member.primitive

布尔

检查类型是否为原始类型(int、char、float等)

$member.modifierStatic

布尔

类型是否具有 static 修饰符?

$member.modifierPublic

布尔

该类型是否有 public 修饰符?

$member.modifierProtected

布尔

类型是否具有受保护的修饰符?

$member.modifierPackageLocal

布尔

类型是否具有包局部修饰符?

$member.modifierPrivate

布尔

该类型是否具有 private 修饰符?

$member.modifierFinal

布尔

该类型是否有 final 修饰符?

$member.string

布尔

类型是否可从 java.lang.String 赋值?

$member.numeric

布尔

类型是否可以从 java.lang.Numeric 或 byte、short、int、long、float、double 的原始类型进行分配?

$member.object

布尔

类型是否可从 java.lang.Object 分配?

$member.date

布尔

类型是否可由 java.util.Date 赋值?

$member.calendar

布尔

类型可以从 java.util.Calendar 分配吗?

$member.boolean

布尔

类型是否可以从 java.lang.Boolean 或原始 boolean 分配?

$field

字段元素

FieldElement 对象

$field.name

String

字段的名称。

$field.modifierTransient

布尔

该字段是否有 transient 修饰符?

$field.modifierVolatile

布尔

字段是否有 volatile 修饰符?

$field.constant

布尔

字段是常量类型吗? (具有 static 修饰符且其名称仅为 UPPERCASE)

$field.matchName(regexp)

布尔

对字段名称执行正则表达式匹配。

$field.enum

布尔

该字段是枚举类型吗?

$method

方法元素

方法 Element 对象

$method.name

String

此变量返回以下之一:

  • 此 getter 方法所覆盖字段的名称

  • 当方法不覆盖字段时,方法的名称 'getFoo'

$method.methodName

String

方法的名称 (getFoo)。

$method.fieldName

String

此 getter 方法涵盖的字段名称——如果该方法不是字段的 getter 方法,则为 null

$method.modifierAbstract

布尔

这是一个抽象方法吗?

$method.modifierSynchronized

布尔

这是一种同步方法吗?

$method.returnTypeVoid

布尔

这个方法是 void 方法(不返回任何内容)吗?

$method.getter

布尔

这是 getter 方法吗?

$method.matchName(regexp)

布尔

对方法名称执行正则表达式匹配。

$method.deprecated

布尔

该方法已弃用吗?

$class

ClassElement

类元素对象

$class.name

String

类的名称

$class.matchName(regexp)

布尔

对类名执行正则表达式匹配。

$class.qualifiedName

String

类的完全限定名

$class.hasSuper

布尔

这个类有超类吗? (扩展另一个类——注意,扩展 java.lang.Object 不被认为具有超类)

$class.superName

String

超类的名称(如果没有超类则为空)

$class.superQualifiedName

String

超类的完全限定名(如果没有超类则为空)

$class.isImplements("interfaceName")

布尔

检查该类是否实现了指定的接口。 可以通过用逗号分隔多个接口的名称来检查名称。

$class.implementNames

字符串[]

返回该类实现的接口的类名。 如果该类未实现任何接口,则返回一个空数组。

$class.isExtends("className")

布尔

检查该类是否扩展了任何给定的类名。 可以通过用逗号分隔名称来检查多个类名。

$class.exception

布尔

此类是否为异常类(继承 Throwable)?

$class.deprecated

布尔

这个类已弃用吗?

$class.enum

布尔

这是一个枚举类吗?

$class.abstract

布尔

这个类是抽象的吗?

输出变量

在 Velocity Template 中可能存在输出变量(变量存储在 Velocity Context 中):在 Velocity context 执行并生效后,输出参数将可用于 Generate 操作。

$autoImportPackages

String

应自动导入的包名。 使用逗号分隔包名。

最后修改日期: 2025年 4月 24日