The Javadoc says:
Runtime: Annotations are to be recorded in the class file by the compiler and retained by the VM at runtime, so they may be read reflectively.
Class: Annotations are to be recorded in the class file by the compiler but need not be retained by the VM at runtime
Source: Annotations are to be discarded by the compiler.
I do not understand the practical usage of Source and Class? Could anyone please clarify.?