@@ -39,6 +39,18 @@ public TransformingSetDemo() {
39
39
innerSet ,
40
40
String .class , this ::stringToInteger ,
41
41
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 ();
42
54
}
43
55
44
56
/**
@@ -56,14 +68,7 @@ public static void main(String[] args) {
56
68
demo .modifyingInnerSet ();
57
69
demo .modifyingTransformedSet ();
58
70
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 ();
67
72
}
68
73
69
74
// #end CONSTRUCTION, MAIN & TRANSFORMATION
@@ -170,6 +175,30 @@ private void breakingInverseFunctions() {
170
175
print ();
171
176
}
172
177
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
+
173
202
// #end DEMOS
174
203
175
204
private static void print () {
0 commit comments