News

When you write String::toUpperCase, Java binds each element of the stream (String object) to the toUpperCase() method. This means String::toUpperCase is interpreted as s -> s.toUpperCase(), where ...
You could avoid the “lack of type safety” and “not enough information” problems by using java.lang.String constants. For example, you might specify static final String DIR_NORTH = "NORTH";.