IntelliJ IDEA和Android Studio编辑get、set模板的Template使用

懒惰是人类文明前进的真正动力,在我们的日常开发中,我们要善于发掘能提高自己效率的工具,让自己有更多的学习时间。编辑Template是我在使用databinding时无意中点进去发现的。关于这方面的资料少之又少,也没有明确的说明,那我就来做一个比较全面的总结吧。

以前写JAVA的model或者写Entity类时,总是要写注释,内容多的时候需要一个一个修改,很麻烦,有浪费时间,如下图

所以我们不应该每天花那么多时间去做这种重复而又低效率的事情,所以,我们就~自动生成注释吧。

IntelliJ IDEA和Android Studio的使用方式都是一样的。我的快捷键Alt+Insert,弹出如下图的页面,可以选择Getter或Setter或Getter and Setter打开面板。

打开面板后会见到如下图所示

打开之后选择默认的get set,看看他们写的源码

从图中可以看到,开头会先判断一下是否为静态对象。

这个是if else的书写格式,结尾需要加上end

  #if ()
    ##
  #else
    ##
  #end

语句书写前需要以#开头

调用field的方法需要以$开头,field里面有各种方法提供调用,每一个参数可以通过$field输出一些信息,然后查看里面所带的属性

输入之后如下图所示

AbstractElement {
    name = 'test对象名称', isArray = false, isPrimitiveArray = false, isObjectArray = false, isStringArray = false, isCollection = false, isMap = false, isSet = false, isList = false, isPrimitive = true, isString = false, isNumeric = true, isObject = false, isDate = false, isCalendar = false, i
sBoolean = false, isLong = false, isFloat = false, isDouble = false, isVoid = false, isChar = false, isByte = false, isShort = false, typeName = 'null', type = 'int', typeQualifiedName = 'null', isModifierStatic = false, isModifierPublic = false, isModifierProtected = false, isModifierPackageLocal = false, isModifierPrivate = true, isModifierFinal = false
} :::FieldElement {
    isConstant = false, isEnum = false, isModifierTransient = false, isModifierVolatile = false
}

这个输出直接反映出这个对象的所有属性。判断语句需要#开头,属性调用需要$开头。

然后再根据自己的需求写一些逻辑判断,给大家参考一下我写的。储存String的的方式。

#if($field.modifierStatic)
static ##
#end
$field.type ##
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#if ($field.boolean && $field.primitive)
  is##
#else
  get##
#end
${name}() {
    $field
    
    #if ($field.boolean && $field.primitive||$field.int)
      return SharedCache.getBoolean(context, "$field.name");
   
    #else
      if (MyUtils.isNullOrEmpty($field.name)) {
          $field.name = SharedCache.getString(context, "$field.name");
      		return $field.name;
      	} else {
      		return $field.name;
          }
    #end
    
    
}
#set($paramName = $helper.getParamName($field, $project))
#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)
      ##
    #else
      ##
    #end
  #end
  SharedCache.add(context,"$field.name",$paramName);
  #if ($field.boolean && $field.primitive)
    this.$field.name = $field.name;
  #else
    this.$field.name = null;
  #end
  
}

判断是否为int 类型:$field.numeric

判断是否为void 类型:$field.void

详细具体看下文。

AbstractElement {
    name = 'crashHandlerSwitch', isArray = false, isPrimitiveArray = false, isObjectArray = false, isStringArray = false, isCollection = false, isMap = false, isSet = false, isList = false, isPrimitive = true, isString = false, isNumeric = true, isObject = false, isDate = false, isCalendar = false, isBoolean = false, isLong = false, isFloat = false, isDouble = false, isVoid = false, isChar = false, isByte = false, isShort = false, typeName = 'null', type = 'int', typeQualifiedName = 'null', isModifierStatic = false, isModifierPublic = false, isModifierProtected = false, isModifierPackageLocal = false, isModifierPrivate = true, isModifierFinal = false
} :::FieldElement {
    isConstant = false, isEnum = false, isModifierTransient = false, isModifierVolatile = false
}

基本上翻译一下就知道每一个true和false是什么意思,需要用到哪个就是用那个函数,调用的时候不需要书写格式不需要写is,并且开头是小写。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值