Skip to content

Instantly share code, notes, and snippets.

@kanterov
Created August 4, 2012 16:33
Show Gist options
  • Save kanterov/3258705 to your computer and use it in GitHub Desktop.
Save kanterov/3258705 to your computer and use it in GitHub Desktop.
Java Named Parameters
// reply to http://worklez.name/blog/2012/07/18/java-named-parameters/
class Request { }
class ManagerProvider { }
class Job {
Job(ManagerProvider provider, Request request, OutputStream out) { }
}
class JobBuilder {
public Job build() {
// check required parameters
if (request == null) {
throw new IllegalStateException();
}
// values by default
managerProvider = managerProvider == null ? new ManagerProvider() : managerProvider;
return new (managerProvider, request, output);
}
public JobBuilder request(Request request) {
this.request = request;
return this;
}
public JobBuilder output(Object output) {
this.output = output;
return this;
}
public JobBuilder managerProvider(ManagerProvider managerProvider) {
this.managerProvider = managerProvider;
return this;
}
public static void main(String[] args) {
Job job = new JobBuilder()
.request(new Request())
.output(new OutputStream())
.build();
// ...
}
private Request request;
private Object output;
private ManagerProvider managerProvider;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment