public class Context {
private final Map<String,Object> values = new HashMap<>();
public void put( String key, Object value ) {
values.put( key, value );
}
public Object get( String key ) {
return values.get( key );
}
[...]
}
Context context = new Context(); Runnable runnable = ... context.put( "key", runnable ); // several computation cycles later... Runnable value = ( Runnable )context.get( "key" );
Context context = new Context(); Runnable runnable = ... context.put( "key", runnable ); // several computation cycles later... Executor executor = ... context.put( "key", executor ); // even more computation cycles later... Runnable value = ( Runnable )context.get( "key" ); // runtime problem
public class Context {
private final <String, Object> values = new HashMap<>();
public <T> void put( String key, T value, Class<T> valueType ) {
values.put( key, value );
}
public <T> T get( String key, Class<T> valueType ) {
return ( T )values.get( key );
}
[...]
}
Context context = new Context(); Runnable runnable = ... context.put( "key", runnable, Runnable.class ); // several computation cycles later... Runnable value = context.get( "key", Runnable.class );
Context context = new Context(); Runnable runnable = ... context.put( "key", runnable, Runnable.class ); // several computation cycles later... Executor executor = ... context.put( "key", executor, Executor.class ); // even more computation cycles later... Runnable value = context.get( "key", Runnable.class ); // runtime problem
public class Context {
private final Map<Class<?>, Object> values = new HashMap<>();
public <T> void put( Class<T> key, T value ) {
values.put( key, value );
}
public <T> T get( Class<T> key ) {
return key.cast( values.get( key ) );
}
[...]
}
Context context = new Context(); Runnable runnable ... context.put( Runnable.class, runnable ); // several computation cycles later... Executor executor = ... context.put( Executor.class, executor ); // even more computation cycles later... Runnable value = context.get( Runnable.class );
public <T> void put( Class<T> key, T value ) {
values.put( key, key.cast( value ) );
}
public class Key<T> {
final String identifier;
final Class<T> type;
public Key( String identifier, Class<T> type ) {
this.identifier = identifier;
this.type = type;
}
}
public class Context {
private final Map<Key<?>, Object> values = new HashMap<>();
public <T> void put( Key<T> key, T value ) {
values.put( key, value );
}
public <T> T get( Key<T> key ) {
return key.type.cast( values.get( key ) );
}
[...]
}
Context context = new Context(); Runnable runnable1 = ... Key<Runnable> key1 = new Key<>( "id1", Runnable.class ); context.put( key1, runnable1 ); Runnable runnable2 = ... Key<Runnable> key2 = new Key<>( "id2", Runnable.class ); context.put( key2, runnable2 ); // several computation cycles later... Runnable actual = context.get( key1 ); assertThat( actual ).isSameAs( runnable1 );
//译者附代码片段 Context context = new Context(); Runnable runnable1 = ... Key<Runnable> key1 = new Key<>( "same-id", Runnable.class ); Key<Runnable> key2 = new Key<>( "same-id", Runnable.class ); context.put( key1, runnable1 );//一个用于put context.get(key2); //另一个用于get --> return null;
public static Key key( String identifier, Class type ) {
return new Key( identifier, type );
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有