范型的应用Demo
// 关注点1,父类指定范型
public abstract class AbstractUserListener<T> {
// 关注点2,本地线程不需要规定死类型
ThreadLocal<List<T>> userThreadMap = new ThreadLocal<>();
// 关注点3,方法中data不需要规定死类型
void invoke(T data, AnalysisContext context);
}
// 关注点1,子类规定范型为AppletUser,可能为OpUser、SysUser
public class AppletUserListener extends AbstractUserListener<AppletUser>{
@Override
// 关注点3,方法中data就是AppletUser
public void invoke(SysUser data, AnalysisContext context) {
// 关注点2,本地线程取出来就是AppletUser
List<SysUser> dataList = dataThreadMap.get();
}
}