Skip to content

Commit 1cca75f

Browse files
author
nicolaiparlog
committed
Include a demo for transforming collection's type safety
1 parent 8c2cd02 commit 1cca75f

File tree

1 file changed

+37
-8
lines changed

1 file changed

+37
-8
lines changed

src/demo/java/org/codefx/libfx/collection/transform/TransformingSetDemo.java

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)