当前位置: 首页 > 知识库问答 >
问题:

在Android Studio中自动生成getter和setter时如何生成注释

司徒茂实
2023-03-14

我还想在自动生成getter和setter时生成注释

Android Studio:

/**
 * username
 */
private String name;

public String getName() {
    return name;
}

我想要:

/**
 * username
 */
private String name;

/**
 * Get username
 * @return username
 */
public String getName() {
    return name;
}

共有3个答案

百里沛
2023-03-14

我认为这在java中是不可能的,但您可以通过以下步骤更改注释/代码模板。

  1. 创建一个带有字段的类
  2. 点击Alt Shift S
  3. 选择选项生成Getters和Setters...
  4. 选择您创建的字段的复选框
  5. 在对话框的底部找到链接代码模板,然后单击它。
  6. 现在,您可以启用项目特定设置选项,并根据需要更改注释/代码模板。
  7. 点击应用并确定
  8. 选择选项生成方法注释,然后单击确定。现在getter和setter将根据您的模板更改创建注释。

请尝试使用上述评论来存档您的想法。

刘野
2023-03-14

创建自定义setter的能力

使用(新)功能,当您触发插入getter/setter意图时,对话框允许您选择要使用的模板:

最后,还有一个开放的特性请求(IDEABKL-4910 Javadocs for getter/setter),在生成setter和getter时自动包含Javadocs。然而,这是积压工作,现在IDEA-28206已经实施,我怀疑这将得到任何关注。

澹台镜
2023-03-14

我知道这篇文章的答案已经被接受了,但是我遇到了同样的问题,尽管我也会试一试。

马克解释了如何在getter和setters选项上创建自己的自定义设置,我尝试使用Intellij的设置来设置gettersetters,并按照我想要的方式进行自定义。

以下是Getter模板在我看来的样子:

/**
*@return Gets the value of $field.name and returns $field.name 
*/
public ##
#if($field.modifierStatic)
  static ##
#end
$field.type ##
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#if ($field.boolean && $field.primitive)
  #if ($StringUtil.startsWithIgnoreCase($name, 'is'))
    #set($name = $StringUtil.decapitalize($name))
  #else
    is##
#end
#else
  get##
#end
${name}() {
  return $field.name;
}

为了便于解释,我使用了$字段。name作为注释值,并使用常规注释结构在方法生成开始之前放置该值。

例如:

    /**
    *@return Gets the value of $field.name and returns $field.name 
    */

我的Setter模板是这样的:

/**
* Sets the $field.name
  You can use get$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))() to get the value of $field.name
*/
#set($paramName = $helper.getParamName($field, $project))
public ##
#if($field.modifierStatic)
  static ##
#end
void set$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))($field.type $paramName) {
  #if ($field.name == $paramName)
    #if (!$field.modifierStatic)
      this.##
    #else
      $classname.##
    #end
  #end
  $field.name = $paramName;
}

以及$字段的值。名称与getter中的名称相同。您可以通过这种方式自定义注释结构,并可以使用其他属性,如$classname## 如果需要也可以。

这只是一个小例子,说明我是如何在Android Studio中为字段生成getters和setters时启用注释的。

希望这对将来的人有帮助。祝你好运。

 类似资料:
  • 在Android Studio中有自动生成给定类中的getter和setter的快捷方式吗?

  • 问题内容: 当我在Eclipse中为名称类似的类字段使用自动生成器进行getter / setter时, 将产生以下内容: 该字段的首字母将不会大写!但是我使用的一些框架可以与反射一起使用,并通过使用“ get” +大写的字段名称来调用getter / setter。 我可以在eclipse中更改getter / setter的代码生成以生成类似和的输出吗? 问题答案: 1)我认为不可能,类似的讨

  • 菜单栏: Code —> Generate —> Getter and Setter Mac: command + N Windows\/Linux: Alt + Insert —> Getter and Setter

  • 当你在Java的时候你可以按 ALT插入-- 在旧版本的Intellij中,我记得当我创建“getter and setter”时,它是在光标位于按下Alt的那一刻创建的。但现在,它们是在为其创建“getter和setter”的字段下创建的。 如何更改此行为,以便在按下Alt/kbd>Insert的那一刻在光标所在的位置创建getter和setter?