import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.common.reflection.qual.MethodVal;
/**
* Example used in the reflection resolution section of the Checker Framework manual
*
* @author smillst
*/
public class NullnessReflectionExampleTest {
@NonNull Location getCurrentLocation() {
//...
return new Location();
}
String getCurrentCity()
throws NoSuchMethodException, SecurityException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
@MethodVal(
className = "NullnessReflectionExampleTest",
methodName = "getCurrentLocation",
params = 0
)
Method toLowerCase = getClass().getMethod("getCurrentLocation");
Location currentLocation = (Location) toLowerCase.invoke(this);
return currentLocation.nameOfCity();
}
}
class Location {
String nameOfCity() {
return "Seattle";
}
}