InteliJ动态模板

时间:2019-11-11 08:33:29

标签: templates intellij-idea live

我对inteliJ实时模板有疑问, 我班上有一个成员:

@JsonProperty("CA_DL_Active_Carriers_NR_SM_DL_UE1")
    private Float caDlActiveCarriersNrSmDlUe1;

并且我想创建一个这样的getter和setter(自定义setter):

  public Float getCaDlActiveCarriersNrSmDlUe1() {
        return caDlActiveCarriersNrSmDlUe1;
    }



   public void setCaDlActiveCarriersNrSmDlUe1(Float caDlActiveCarriersNrSmDlUe1) {
        if (Objects.equals(getCaDlActiveCarriersNrSmDlUe1(), caDlActiveCarriersNrSmDlUe1)) {
            return;
        }
        this.caDlActiveCarriersNrSmDlUe1 = caDlActiveCarriersNrSmDlUe1;
        if (DocKind.ORIG == docKind) {
            ((McpttIterationDocument) prepareDirtyDocument()).setCaDlActiveCarriersNrSmDlUe1(caDlActiveCarriersNrSmDlUe1);
        }

我为二传手创建了一个现场神庙:

public void set$CAP_SELECTION$(java.lang.Float $SELECTION$) {
        if (java.util.Objects.equals(get$CAP_SELECTION$, $SELECTION$)) {
            return;
        }
        this.$SELECTION$ = $SELECTION$;
        if (com.att.tlv.arc.backend.api.persistence.documents.BaseDocument.DocKind.ORIG == docKind) {
            (($CLASSNAME$) prepareDirtyDocument()).set$CAP_SELECTION$($SELECTION$);
        }

[![可变设置] [1]] [1]       [1]:https://i.stack.imgur.com/L4YPN.png
但是当我使用自定义设置程序时,我的$ CAP_SELECTION $和$ SELECTION $为空:

有人能帮助我理解我做错了什么吗? 我还可以突出显示我的成员(双击它)并应用我的种子吗?就像点击“生成”但插入常规选项一样,我将使用实时模板...

2 个答案:

答案 0 :(得分:0)

要创建自定义设置器,最好使用Code | Generate操作。您可以在此处添加自定义getter或setter模板,以创建所需的方法。

这是做什么:

  1. 调用Code | Generate(在Mac上为 + N
  2. 在出现的弹出窗口中选择Getter and Setter
  3. 在“ Setter”模板下拉列表后,单击...按钮
  4. 使用+按钮添加新模板
  5. 添加类似以下模板文本的内容并为其命名:
#set($paramName = $helper.getParamName($field, $project))
#set($methodSuffix = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#if($field.modifierStatic)
static ##
#end
void set$methodSuffix($field.type $paramName) {
if (java.util.Objects.equals(get$methodSuffix(), $paramName)) {
return;
}
#if ($field.name == $paramName)
    #if (!$field.modifierStatic)
    this.##
    #else
        $classname.##
    #end
#end
$field.name = $paramName;
if (DocKind.ORIG == docKind) {
((McpttIterationDocument) prepareDirtyDocument()).set$methodSuffix($paramName);
}
}

您可能希望完全引用对DocKindMcpttIterationDocument的引用。

  1. 在模板对话框中单击OK,然后在“生成吸气剂和设置器”对话框中单击OK

结果:可重用的自定义设置器模板。

答案 1 :(得分:0)

您还可以使用“实时模板”。 创建,属性,成员,自定义getter和setter。

打开intelij 单击prefrencess搜索“实时模板” 点击+ m并添加您的模板。

使用以下代码:

@JsonProperty(“ $ SELECTION $”) 私人$ ELEMENT_TYPE $ $ TOLOWER $;

public $ELEMENT_TYPE$ get$CAP_SELECTION$() {
    return $TOLOWER$;
}

public void set$CAP_SELECTION$($ELEMENT_TYPE$ $TOLOWER$) {
        if (java.util.Objects.equals(get$CAP_SELECTION$(), $TOLOWER$)) {
            return;
        }
        this.$TOLOWER$ = $TOLOWER$;
        if (com.att.tlv.arc.backend.api.persistence.documents.BaseDocument.DocKind.ORIG == docKind) {
            (($CLASSNAME$) prepareDirtyDocument()).set$CAP_SELECTION$($TOLOWER$);
        }


    $END$

使用以下variables settings

请参阅示例:

example

example2