Android Studio tips2-- Getter 模板
2018-07-25 本文已影响167人
南魂09
在处理实体类的时候,Android Studio 提供了默认的getter/setter方法。
但是在使用的过程中,调用getter比较容易出现Null的情况,容易导致NullPointerException,从而导致程序直接崩溃。所以我们可以通过getter模板的修改,如果为null的时候,我们重新生成一个对象进行返回。虽然此种解决方法理论上会造成内存的增加,但是相对于更多的if判断或程序奔溃,目前来说还是能在接受的范围内。
通过在网上查找方案,记录了Getter生成代码的模板。
首先我们新建一个实体类,在类里面写一个简单的属性,然后command+N调出Generate面板,选择Getter。

然后点击添加新模板

点击OK,然后在代码生成的时候选择我们新建的模板

然后生成的代码就有了非空判断了

下面是模板的代码
#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}() {
#if ($field.string)
return $field.name == null ? "" : $field.name;
#else
#if ($field.list)
if ($field.name == null) {
return new ArrayList<>();
}
return $field.name;
#else
return $field.name;
#end
#end
}