今天看到了一块代码List存放的数据是一个接口类型的!我知道List可以存放Object类型的不知道可以存放Interface类型的!希望大佬给我这个小白上一课这样可以吗?
代码如下:
List<DataProcessor> DataProcessor 是一个接口
代码中没有对这个list操作就在方法中直接遍历操作了
接口的代码在下面
//这里List存放的数据类型是一个接口
private List<DataProcessor> processors ;
private Logger logger = Logger.getLogger(DataProcessHandler.class);
@Transactional
public ADIContext handle(ADIContext context){
try {
//这里直接操作这个List
for(DataProcessor processor : processors){
if(context.getStatus() == context.STATUS_SUCCESS){
processor.process(context);
}else{
break ;
}
}
} catch (Exception e) {
context.setStatus(ADIContext.STATUS_FAIL);
context.setMsg("数据存储处理失败..."+ExceptionHelper.getExceptionString(e));
logger.error("数据存储处理失败,taskId="+context.getTaskId(),e);
}
if(context.getStatus() == context.STATUS_FAIL){
throw new RuntimeException(context.getMsg());
}
return context;
}
接口的代码
public interface DataProcessor {
void process(ADIContext context);
}
相关问题
- Delete Messages from a Topic in Apache Kafka
- Jackson Deserialization not calling deserialize on
- How to maintain order of key-value in DataFrame sa
- StackExchange API - Deserialize Date in JSON Respo
- Difference between Types.INTEGER and Types.NULL in
有什么问题吗?当然可以存放接口类型。任何类型都可以。
可以,怎么存都可以
processors 这个可以被设置值的
额额,IList<T>,看这T有约束没有?然后自己就明白了,依赖倒置,协变。
“我知道List可以存放Object类型的不知道可以存放Interface类型的。”
万物皆是Object呀。