Dynamic method selection is so confusing! #
Here is Allyson’s DMS flowchart from a few semesters ago. You can follow the steps in it methodically to figure out how lines compile and run. Here is Crystal’s version, which is typed up.
ListSet
#
Why does ListSet::remove
have that given line? #
As mentioned in the comment, the reason that we need the line is out of scope.
Specifically, the List
interface has two remove
methods:
remove(int index)
, that removes an element at a specific indexremove(Object elem)
, that removes a specific thing from the list
We would like to use the latter, so we must “autobox” the given int
to
Integer
with the given assignment statement.
BooleanSet
#
Do we have to handle inputs outside [0, maxElem
] (inclusive)? #
No.