0条评论
还没有人评论过~
今天看到了一块代码List存放的数据是一个接口类型的!我知道List可以存放Object类型的不知道可以存放Interface类型的!希望大佬给我这个小白上一课这样可以吗?
代码如下:
//这里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);
}
processors 这个可以被设置值的
有什么问题吗?当然可以存放接口类型。任何类型都可以。
可以,怎么存都可以
“我知道List可以存放Object类型的不知道可以存放Interface类型的。”
万物皆是Object呀。
额额,IList<T>,看这T有约束没有?然后自己就明白了,依赖倒置,协变。