Experience with implementing interfaces.
If you are struggling with this studio, consider completing one or both of the warm ups
Complete the Shape warm up to gain experience with implementing an interface, as well as declaring and using fields.
The DoubleRange warm up to gain experience implementing an Iterable<T> without simply containing a List<T> which holds the values. Further, you can gain experience creating instances of an anonymous class.
Mistakes To Avoid
|Warning: Do NOT Parallelize|
|Warning: Do NOT confuse Iterable<T> from Iterator<T>|
Code to Implement
It is important to consider what state each class should encapsulate. The class PowersOfTwoLessThan, which is Iterable, should be have need to store little (if anything) beyond the maxExclusive passed in to its constructor. Further, PowersOfTwoLessThan should be immutable. There is no need to change any of the data during its lifetime.
The Iterator<Integer> instances created whenever one invokes the iterator() method? Now, the data for those instances are going to need to mutate.
One should NOT need to create a List to support this class. A single private final int instance variable is all you need for PowersOfTwoLessThan and a single (mutable) int instance variable is all you need for its Iterator.
Investigate: Anonymous Inner Classes
Testing Your Solution
Pledge, Acknowledgments, Citations
More info about the Honor Pledge