1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 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); }; }