@@ -82,44 +82,19 @@ public int size() {
8282 public Column <T > get (final int col ) {
8383 if (col != 0 ) //
8484 throw new IllegalArgumentException ("Column out of range: " + col );
85- class ColumnAccessor implements ReadOnlyColumn <T > {
8685
87- private final Object tableData = data ;
88-
89- @ Override
90- public String getHeader () {
91- return colHeader ;
92- }
86+ return new ColumnAccessor <T >(data , colHeader ) {
9387
9488 @ Override
9589 public int size () {
9690 return data .size ();
9791 }
9892
99- @ Override
100- public Class <T > getType () {
101- // TODO: Consider whether this is terrible.
102- throw new UnsupportedOperationException ();
103- }
104-
10593 @ Override
10694 public T get (final int index ) {
10795 return data .get (index );
10896 }
109-
110- @ Override
111- public int hashCode () {
112- return getHeader ().hashCode ();
113- }
114-
115- @ Override
116- public boolean equals (final Object obj ) {
117- if (!(obj instanceof ColumnAccessor )) return false ;
118- final ColumnAccessor other = ((ColumnAccessor ) obj );
119- return data == other .tableData ;
120- }
121- }
122- return new ColumnAccessor ();
97+ };
12398 }
12499 };
125100 }
@@ -163,9 +138,8 @@ public int size() {
163138
164139 @ Override
165140 public Column <T > get (final int col ) {
166- class ColumnAccessor implements ReadOnlyColumn <T > {
141+ return new ColumnAccessor <T >( data , null ) {
167142
168- private final Object tableData = data ;
169143 private boolean initialized ;
170144 private String colHeader ;
171145
@@ -189,31 +163,11 @@ public int size() {
189163 return data .size ();
190164 }
191165
192- @ Override
193- public Class <T > getType () {
194- // TODO: Consider whether this is terrible.
195- throw new UnsupportedOperationException ();
196- }
197-
198166 @ Override
199167 public T get (final int index ) {
200168 return data .get (index ).get (getHeader ());
201169 }
202-
203- @ Override
204- public int hashCode () {
205- return getHeader ().hashCode ();
206- }
207-
208- @ Override
209- public boolean equals (final Object obj ) {
210- if (!(obj instanceof ColumnAccessor )) return false ;
211- final ColumnAccessor other = ((ColumnAccessor ) obj );
212- if (data != other .tableData ) return false ;
213- return Objects .equals (getHeader (), other .getHeader ());
214- }
215- }
216- return new ColumnAccessor ();
170+ };
217171 }
218172 };
219173 }
@@ -429,4 +383,39 @@ default void setSize(int size) {
429383 throw readOnlyException ();
430384 }
431385 }
386+
387+ private static abstract class ColumnAccessor <T > implements ReadOnlyColumn <T > {
388+
389+ private final Object data ;
390+ private final String colHeader ;
391+
392+ private ColumnAccessor (final Object data , final String colHeader ) {
393+ this .data = data ;
394+ this .colHeader = colHeader ;
395+ }
396+
397+ @ Override
398+ public String getHeader () {
399+ return colHeader ;
400+ }
401+
402+ @ Override
403+ public Class <T > getType () {
404+ // TODO: Consider whether this is terrible.
405+ throw new UnsupportedOperationException ();
406+ }
407+
408+ @ Override
409+ public int hashCode () {
410+ return getHeader ().hashCode ();
411+ }
412+
413+ @ Override
414+ public boolean equals (final Object obj ) {
415+ if (!(obj instanceof ColumnAccessor )) return false ;
416+ final ColumnAccessor <?> other = ((ColumnAccessor <?>) obj );
417+ if (data != other .data ) return false ;
418+ return Objects .equals (getHeader (), other .getHeader ());
419+ }
420+ }
432421}
0 commit comments