FreeBuilder
为Java1.6+ 自动生成 Builder模式。
当设计类的构造函数或静态工厂具有多个参数时,Builder模式是一个不错的选择。—— EffectiveJava,第二版,第39页
背景在Java中实现Builder模式容易出错和重复。即使是一个简单的四字段类,最基本的构建器API需要39行代码,如果你不使用像AutoValue这样的实用程序来生成值样板,则需要72行代码。
使用import org.iferred.freebuilder.FreeBuilder;@FreeBuilderpublic iterface Perso { /** Returs the perso's full (Eglish) ame. */ Strig ame(); /** Returs the perso's age i years, rouded dow. */ it age(); /** Builder of {@lik Perso} istaces. */ class Builder exteds Perso_Builder { }}JavaBeacovetio如果值类型遵循JavaBea命名约定,只需在访问器方法前面加上'get'(或者,布尔访问器是'is')。FreeBuilder会跟随,并在setter方法上添加“set”前缀,以及从toStrig输出中删除前缀。
@FreeBuilderpublic iterface Perso { /** Returs the perso's full (Eglish) ame. */ Strig getName(); /** Returs the perso's age i years, rouded dow. */ it getAge(); /** Builder of {@lik Perso} istaces. */ class Builder exteds Perso_Builder { }}Perso perso = ew Perso.Builder() .setName("Phil") .setAge(31) .build();System.out.pritl(perso); // Perso{ame=Phil, age=31}






评论