Mercurial Hosting > luan
comparison src/luan/LuanMutable.java @ 1578:c922446f53aa
immutable threading
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 08 Feb 2021 14:16:19 -0700 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1577:60e5c324adf9 | 1578:c922446f53aa |
---|---|
1 package luan; | |
2 | |
3 import java.util.Map; | |
4 import java.util.Collection; | |
5 | |
6 | |
7 public interface LuanMutable { | |
8 public boolean isImmutable(); | |
9 public void makeImmutable(); | |
10 | |
11 public static void makeImmutable(LuanMutable obj) { | |
12 if( obj==null ) | |
13 return; | |
14 obj.makeImmutable(); | |
15 } | |
16 | |
17 public static void makeImmutable(Object[] a) { | |
18 if( a==null ) | |
19 return; | |
20 for( Object obj : a ) { | |
21 makeImmutable(obj); | |
22 } | |
23 } | |
24 | |
25 public static void makeImmutable(Map map) { | |
26 if( map==null ) | |
27 return; | |
28 for( Object stupid : map.entrySet() ) { | |
29 Map.Entry entry = (Map.Entry)stupid; | |
30 makeImmutable(entry.getKey()); | |
31 makeImmutable(entry.getValue()); | |
32 } | |
33 } | |
34 | |
35 public static void makeImmutable(Collection col) { | |
36 if( col==null ) | |
37 return; | |
38 for( Object obj : col ) { | |
39 makeImmutable(obj); | |
40 } | |
41 } | |
42 | |
43 public static void makeImmutable(Object obj) { | |
44 if( obj instanceof LuanMutable ) | |
45 makeImmutable((LuanMutable)obj); | |
46 else if( obj instanceof Object[] ) | |
47 makeImmutable((Object[])obj); | |
48 else if( obj instanceof Map ) | |
49 makeImmutable((Map)obj); | |
50 else if( obj instanceof Collection ) | |
51 makeImmutable((Collection)obj); | |
52 } | |
53 } |