| 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) |
| @Nullable @KeyFor("someMap") String myKey = Issue1922.<@KeyFor("someMap") String>findKey(someMap.keySet(), "Foo"); |
| |
| // :: error: (argument) |
| Object value = someMap.get(myKey); |
| return value.toString(); |
| } |
| |
| public static void main(String[] args) { |
| findKeyAndFetchString(new HashMap<>()); |
| } |
| } |