I see about decorator example in Python:
def makebold(fn):
    def wrapped():
        return "<b>" + fn() + "</b>"
    return wrapped
def makeitalic(fn):
    def wrapped():
        return "<i>" + fn() + "</i>"
    return wrapped
@makebold
@makeitalic
def hello():
    return "hello world"
print hello() ## returns <b><i>hello world</i></b>
And got some curious how it can be implement in Java, so I search and got some example using Decorator Design Pattern.
public class Main {
    public static void main(String[] args) {
        Wrapper word = new BoldWrapper(new ItalicWrapper());
        // display <b><i>hello world</i></b>
        System.out.println(word.make("Hello World"));
    }
}
public interface Wrapper {
    public String make(String str);
}
public class BoldWrapper implements Wrapper {
    private Wrapper wrapper;
    public BoldWrapper() {
    }
    public BoldWrapper(Wrapper wrapper) {
        this.wrapper = wrapper;
    }
    @Override
    public String make(String str) {
        if(wrapper != null) {
            str = wrapper.make(str);
        }
        return "<b>" + str + "</b>";
    }
}
public class ItalicWrapper implements Wrapper {
    private Wrapper wrapper;
    public ItalicWrapper() {
    }
    public ItalicWrapper(Wrapper wrapper) {
        this.wrapper = wrapper;
    }
    @Override
    public String make(String str) {
        if(wrapper != null) {
            str = wrapper.make(str);
        }
        return "<i>" + str + "</i>";
    }
}
How do I make this like the Python example above using a Java Annotation like this one:
public class Main {
    public static void main(String[] args) {
        @BoldWrapper
        @ItalicWrapper
        String str = "Hello World";
        // Display <b><i>Hello World</i></b>
    }
}
public @interface BoldWrapper {
    public void wrap() default "<b>" + str + "</b>";
}
public @interface ItalicWrapper {
    public void wrap() default "<i>" + str + "</i>";
}
I got some problem when I tried to make the sample, the problem is I don't know how I can pass the str value from the main method to the BoldWrapper and ItalicWrapper so it can concatenate and how to return it, so the main method can display the result that has been concatenate. 
Please advise if there is something wrong with my understanding of annotation.
 
     
     
     
     
     
     
    