有没有办法让IntelliJ更聪明地生成它的getter/setter?特别是,如果字段名称中有下划线,那么getter是否可以将它们剥离并转换为CamelCase?
例如,我希望下面的getter是getCarneAsada():
public class Taco {
private String carne_asada;
public String getCarne_asada() {
return carne_asada;
}
}
Run Code Online (Sandbox Code Playgroud)
我找到了该Code Style->Java->Code Generation区域,但没有一个选项看起来合适......它不是我要排除的前缀或后缀.这是内心的下划线.
mab*_*aba 13
您可以使用实时模板来完成此任务.它不能从代码生成中访问,但它仍然很容易使用.
我用属性创建了一个Main类carne_asada:

现在Live Templates在设置中打开并创建一个名为getuunder 的新模板other:

按下Define底部调用的小链接以定义此模板何时有效.然后选择Java | Declaration:

按按钮Edit Variables打开一个窗口,可以在其中定义每个实时模板变量.现在创建以下变量:
VAR : suggestFirstVariableName("Object")
TYPE : typeOfVariable(VAR)
CAP_CAM_VAR : capitalize(underscoresToCamelCase(VAR))
Run Code Online (Sandbox Code Playgroud)
订单非常重要,所以VAR必须先行.在我的例子中CAP_CAM_VAR代表Capitalize和CamelCase的VAR变量.在设置Skip if defined根据图像:

现在按,OK然后OK再回到编辑器.
getu键入getu然后按Tab:尝试新的实时模板:


按下Enter并且吸气剂生成已完成:

现在,如果您有更多带下划线的变量,您将获得一个可供选择的列表,所以这是一个示例:

结果很美:

您可以轻松创建相同的setu实时模板,也sgetu可以创建一个同时创建它们的模板.
希望这有点帮助!
小智 5
这是用于在IntelliJ IDEA 2016和Android Studio 2.2下生成getter / setter的模板。
驼色吸气剂:
#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
#set($words = $StringUtil.split($name, "_"))
#set($name = "")
#foreach($word in $words)
#set($name = $name + $StringUtil.capitalize($word))
#end
${name}() {
return $field.name;
}
Run Code Online (Sandbox Code Playgroud)
骆驼二传手:
#set($paramName = $helper.getParamName($field, $project))
#if($field.modifierStatic)
static ##
#end
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#set($words = $StringUtil.split($name, "_"))
#set($name = "")
#foreach($word in $words)
#set($name = $name + $StringUtil.capitalize($word))
#end
void set$name($field.type $StringUtil.decapitalize($name)) {
#if ($field.name == $paramName)
#if (!$field.modifierStatic)
this.##
#else
$classname.##
#end
#end
$field.name = $paramName;
}
Run Code Online (Sandbox Code Playgroud)
如果您希望上述内容能流利地使用,请参阅我的要点。
https://gist.github.com/k24/72d0be3d76d4eb987c6d4eb1d8f42db2
| 归档时间: |
|
| 查看次数: |
8451 次 |
| 最近记录: |