Skip to content

Repository files navigation

zerobilder-compiler zerobuilder

zerobuilder

This generates a "telescoping" builder where every field must be filled, otherwise it's a compiler error.

To generate the builder, annotate a record class with @RecordBuilder and / or @RecordUpdater.

@RecordBuilder
@RecordUpdater
record Message(
  String sender,
  String body,
  String recipient
) {
}

The generated class will be called MessageBuilders.

@Generated
final class MessageBuilders {

  // from @RecordBuilder annotation
  static SenderStep builder()

  private static class MessageBuilder implements SenderStep, BodyStep, RecipientStep {
    @Override BodyStep sender(String sender)
    @Override RecipientStep body(String body)
    @Override Message recipient(String recipient)
  }

  interface SenderStep { BodyStep sender(String sender) }
  interface BodyStep { RecipientStep body(String body) }
  interface RecipientStep { Message recipient(String recipient) }

  // from @RecordUpdater annotation
  static MessageUpdater builder(Message message)

  static class MessageUpdater {
    MessageUpdater sender(String sender)
    MessageUpdater body(String body)
    MessageUpdater recipient(String recipient)
    Message build()
  }
}

see also

similar project: https://github.com/DanielLiu1123/recordbuilder

About

A flexible builder scheme for Java

Resources

Contributing

Stars

24 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages