001 import java.util.*;
002
003 /**
004 * This class illustrates an incorrect use of the @NonNull type annotation.
005 * The class doesn't do anything -- it is merely meant to be compiled.
006 * Compilation will produce warning messages.
007 * <p>
008
009 * Also see {@link NullnessExample}, an example of correct use
010 * of the @NonNull type annotation. See the Nullness checker documentation
011 * for larger examples of annotated code.
012 **/
013 public class NullnessExampleWithWarnings {
014
015 public void example() {
016
017 // This type annotation is redundant -- the Nullness Checker will
018 // infer it, but it is written here in the example for emhpasis.
019 // In general, you do not have to annotate local variables.
020 /*@NonNull*/ String foo = "foo";
021 String bar = null;
022
023 foo = bar;
024 bar = foo;
025
026 }
027
028 public /*@NonNull*/ String exampleGenerics() {
029
030 List</*@NonNull*/ String> foo = new LinkedList</*@NonNull*/ String>();
031 List<String> bar = foo;
032
033 String quux = null;
034 foo.add(quux);
035 foo.add("quux");
036 /*@NonNull*/ String baz = foo.get(0);
037 return baz;
038
039 }
040
041 }