diff options
| author | Ben Culkin <scorpress@gmail.com> | 2020-11-22 15:15:11 -0500 |
|---|---|---|
| committer | Ben Culkin <scorpress@gmail.com> | 2020-11-22 15:15:11 -0500 |
| commit | c85db1bef75e5c9b7287ab7fdb6e1380d577c674 (patch) | |
| tree | 081805e198cbab9025789ca4c142003279a5a201 /src/main/java/bjc/data/IContext.java | |
| parent | 86ad50b4df6166c6f99b08d91d49fe59ee754619 (diff) | |
Add a 'context' type
This was some example code I found somewhere that seemed interesting.
Diffstat (limited to 'src/main/java/bjc/data/IContext.java')
| -rw-r--r-- | src/main/java/bjc/data/IContext.java | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main/java/bjc/data/IContext.java b/src/main/java/bjc/data/IContext.java new file mode 100644 index 0000000..a1073f1 --- /dev/null +++ b/src/main/java/bjc/data/IContext.java @@ -0,0 +1,18 @@ +package bjc.data; + +public interface IContext { + void register(String name, Object o); + + IContext getParent(); + + Object get(String name); + + <T> T get(Class<T> contract); + + default <T> T get(String name, Class<T> contract) { + Object obj = get(name); + return obj == null + ? getParent().get(name, contract) + : contract.cast(obj); + }; +} |
