java泛型使用demo
本demo 以 入参校验 为例,为大家说明泛型在实际应用中如何使用:
- Visio
- 代码部分
Visio 图:
代码部分
/**
* 请求校验器接口
*/
public interface Validator<R> {
void validate(R obj);
}
/**
* <p>请求校验器基类。</p>
*
* @param <R> 请求类型参数,必须继承自 BaseRequestDto
*
*/
public abstract class ValidatorBase<R extends BaseRequestDto> implements Validator<R> {
/**
* 请求校验。
* @param request
* @throws
*/
@Override
public void validate(R request) {
//do common validate ...
this.validateInternal(request);
}
/**
* 特请请求校验器,集成覆盖该方法,实现特有验证逻辑。
*
* @param request 请求对象。
*/
protected abstract void validateInternal(R request);
}
/**
* 入参基类
*/
public class BaseRequestDto{
private String version="1.0.0";
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
}
/**
* 认证请求数据传输对象
*/
public class AuthRequestDto extends BaseRequestDto {
private static final long serialVersionUID = -2222013226475844987L;
/**
* 请求秘钥
* 说明:非空。
*/
private String token;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}
/**
* 认证请求参数校验类
*/
@Component("authValidator")
public class AuthValidator extends ValidatorBase<AuthRequestDto> {
@Override
protected void validateInternal(AuthRequestDto request) {
//do privately-owned validate ...
}
}
/**
* 认证服务类
* 此类说明 认证参数校验类 如何使用
*/
@Component("authService")
public class AuthServiceImpl implements AuthService {
private static final Logger logger = LoggerFactory.getLogger(AuthServiceImpl.class);
//验证对象定义:
@Resource(name = "authValidator")
private Validator<AuthRequestDto> authRequestValidator;
@Override
public AuthResponse authByJrId(AuthRequestDto request) {
*authRequestValidator.validate(request);*
}
}
到此java 泛型使用demo 介绍结果,希望能够对大家有所帮助。