File: Issue1922.java

package info (click to toggle)
checker-framework-java 3.2.0%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 23,104 kB
  • sloc: java: 145,916; xml: 839; sh: 518; makefile: 404; perl: 26
file content (31 lines) | stat: -rw-r--r-- 1,100 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.checkerframework.checker.nullness.qual.KeyFor;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;

public class Issue1922 {
    // A method to find a K in the collection and return it, or return null.
    public static <K> @Nullable K findKey(Collection<@NonNull K> keys, Object target) {
        for (K key : keys) {
            if (target.equals(key)) {
                return key;
            }
        }
        return null;
    }

    // Find a key in a map and return String version of its value.
    public static String findKeyAndFetchString(Map<String, Object> someMap) {
        // :: error: (type.argument.type.incompatible)
        @Nullable @KeyFor("someMap") String myKey = Issue1922.<@KeyFor("someMap") String>findKey(someMap.keySet(), "Foo");

        Object value = someMap.get(myKey);
        return value.toString();
    }

    public static void main(String[] args) {
        findKeyAndFetchString(new HashMap<>());
    }
}