My favorites | Sign in
Project Home Wiki Issues Source
Search
for
AnnotationsDefaultParametersExample  
Updated Jul 9, 2011 by ZombiesA...@gmail.com

JavaDude Tools->Annotations->Annotations examples

Default Parameters Example

C++-like default parameter values are now easy to implement in Java!

package sample;

import sample.Processor.Size;

import com.javadude.annotation.Bean;
import com.javadude.annotation.Default;

@Bean
public class DefaultParameterExample extends DefaultParameterExampleGen {
    protected void process(Processor processor, 
                           String item, 
                           @Default("Processor.Size.LARGE") Size size,
                           @Default("red") String color, 
                           @Default("1") int quantity) {
        processor.process(item, size, color, quantity);
    }
 
    public void report(@Default("Hello") String message) {
        System.out.println("Message: " + message);
    }
 
    public static void main(String[] args) {
        DefaultParameterExample e = new DefaultParameterExample();
        e.report();
        e.report("Goodbye");
        Processor processor = new DefaultProcessor();
        e.process(processor, "shirt", Size.SMALL, "blue", 2);
        e.process(processor, "shirt", Size.SMALL, "blue");
        e.process(processor, "shirt", Size.SMALL);
        e.process(processor, "shirt");
    }
}

will generate the following (note: I have reformatted the parameters; they would normally be generated on a single line)

// CODE GENERATED BY JAVADUDE BEAN ANNOTATION PROCESSOR 
// -- DO NOT EDIT  -  THIS CODE WILL BE REGENERATED! --
package sample;
 
@javax.annotation.Generated(
    value = "com.javadude.annotation.processors.BeanAnnotationProcessor", 
    date = "Mon Aug 25 23:31:34 EDT 2008", 
    comments = "CODE GENERATED BY JAVADUDE BEAN ANNOTATION PROCESSOR; DO NOT EDIT! THIS CODE WILL BE REGENERATED!")
public abstract class DefaultParameterExampleGen  {
    public DefaultParameterExampleGen() {
        ;
    }
 
    protected void process(sample.Processor processor, java.lang.String item)  {
        process(processor, item, Processor.Size.LARGE, "red", 1);
    }
    protected void process(sample.Processor processor, 
                           java.lang.String item, 
                           sample.Processor.Size size)  {
        process(processor, item, size, "red", 1);
    }
    protected void process(sample.Processor processor, 
                           java.lang.String item, 
                           sample.Processor.Size size, 
                           java.lang.String color)  {
        process(processor, item, size, color, 1);
    }
    protected abstract void process(sample.Processor processor, 
                                    java.lang.String item, 
                                    sample.Processor.Size size, 
                                    java.lang.String color, 
                                    int quantity) ;
    public void report()  {
        report("Hello");
    }
    public abstract void report(java.lang.String message) ;
    @Override
    public java.lang.String toString() {
        return getClass().getName() + '[' + paramString() + ']';
    }
    protected java.lang.String paramString() {
        return "";
    }
}

JavaDude Tools->Annotations->Annotations examples


Sign in to add a comment
Powered by Google Project Hosting