Making a separate class for each digit is *very* heavy handed. Instead I would use a single class that can assert or clear the segments individually, and return a collection of asserted segments.
My example stores the state of the display internally as an int value, and has a hard-coded list of values for each digit.
Note that I only added a toString() method to the SegmentDisplay class to illustrate the correctness of the class. I normally wouldn't add a toString() method that contains line separators. The hard-coded Strings in the Segment enum can then also be removed.
The original poster could add a
String[] toLines(int size) method, that returns a String for each line of digit, depending on the length of each segment. These lines can then simply be merged together when there are multiple digits to be printed. For this, methods isHorizontal()/isVertical() could be added to the Segment enum.