@@ -39,6 +39,18 @@ public TransformingSetDemo() {
3939 innerSet ,
4040 String .class , this ::stringToInteger ,
4141 Integer .class , this ::integerToString );
42+
43+ print ("-- Initial state --" );
44+ print ("\t -> " + innerSet + " ~ " + transformingSet );
45+ print ();
46+ }
47+
48+ private Integer stringToInteger (String string ) {
49+ return Integer .parseInt (string );
50+ }
51+
52+ private String integerToString (Integer integer ) {
53+ return integer .toString ();
4254 }
4355
4456 /**
@@ -56,14 +68,7 @@ public static void main(String[] args) {
5668 demo .modifyingInnerSet ();
5769 demo .modifyingTransformedSet ();
5870 demo .breakingInverseFunctions ();
59- }
60-
61- private Integer stringToInteger (String string ) {
62- return Integer .parseInt (string );
63- }
64-
65- private String integerToString (Integer integer ) {
66- return integer .toString ();
71+ demo .typeSafety ();
6772 }
6873
6974 // #end CONSTRUCTION, MAIN & TRANSFORMATION
@@ -170,6 +175,30 @@ private void breakingInverseFunctions() {
170175 print ();
171176 }
172177
178+ private void typeSafety () {
179+ print ("-- Using type tokens to increase type safety --" );
180+ Set <Integer > transformingSetWithoutTokens = new TransformingSet <>(
181+ innerSet ,
182+ Object .class , this ::stringToInteger ,
183+ Object .class , this ::integerToString );
184+
185+ print ("Insert 0, 1, 2" );
186+ transformingSet .add (0 );
187+ transformingSet .add (1 );
188+ transformingSet .add (2 );
189+ print ("\t -> " + innerSet + " ~ " + transformingSet + " ~ " + transformingSetWithoutTokens );
190+
191+ print ("Calling contains with an 'Object o'" );
192+ Object o = new Object ();
193+ print ("\t 'innerSet.contains(o)': " + innerSet .contains (o ));
194+ print ("\t 'transformingSet.contains(o)': " + transformingSet .contains (o ));
195+ try {
196+ print ("\t 'transformingSetWithoutTokens.contains(o)': " + transformingSetWithoutTokens .contains (o ));
197+ } catch (ClassCastException ex ) {
198+ print ("\t 'transformingSetWithoutTokens.contains(o)': CLASS CAST EXEPTION" );
199+ }
200+ }
201+
173202 // #end DEMOS
174203
175204 private static void print () {
0 commit comments