java中的return this什么时候用,返回的是类里面的方法类型,还是实例类??下面的代码什么意思?
public class RoleService extends BaseService {
private IRoleDao roleDao;
public ServiceReturns> findAll() throws Exception {
String ss ;
try {
List allRoleList = roleDao.findAll(Role.class);
if (allRoleList.size() <= 0) {
this.setSuccess(false);
this.setMessageCode(MessageConstant.FIND_ALLROLE_FAILURE);
return this;
}
this.setDataObject(allRoleList);
this.setForwardUrl(ForwardUrlConstant.FIND_ALLROLE_SUCCESS);
return this;
} catch (Exception exception) {
this.saveLog(exception, new LogDetails(
ModuleConstant.MODULE_ROLE_MANAGEMENT,
ModuleConstant.METHOD_COMMON_FIND_ALL, getClassName()),
MessageConstant.FIND_ALLROLE_FAILURE);
this.setSuccess(false);
}
return this;
}
这个类中好几个return this 各代表什么意思啊?
public class BaseService extends ServiceReturns{
private LogDetails logDetails = new LogDetails();
protected LogDao logDao;
public void saveLog(LogDetails log){
logDao.save(log);
}
public LogDao getLogDao() {
return logDao;
}
.....
public class ServiceReturns {
private boolean success ;
private String messageCode;
private T dataObject;
private String forwardUrl="";
public String getMessageCode() {
return messageCode;
}
public void setMessageCode(String messageCode) {
this.messageCode = messageCode;
}
public ServiceReturns() {
}
public ServiceReturns(boolean _success) {
this.success = _success;
}
.....
RoleService其实继承了serviceReturn ,但是RoleService 中的方法返回的又是serviceReturn ,RoleService 中的方法return this指的是什么,RoleService 中的saveLog方法里面的this.setSuccess(false)应该值的是ServiceReturn类中的变量,而对这个方法而言没有返回值啊?
我去完全晕了!!!!
------解决方案--------------------
return this;返回的是实际调用这个方法的实例化对象。
比如 ServiceReturns> r = new RoleService();
我们实例化了一个RoleService类型的对象,把它赋给了ServiceReturns> 类型的引用 r
(子类类型对象可以隐式转换成其父类类型的对象)
r.findAll()返回的是r引用的实例化对象
所以你需要理解的是
1.对象和对象引用的区别
2.父类引用可以引用子类实例化对象的原因
------解决方案--------------------
引用:return this;返回的是实际调用这个方法的实例化对象。
比如 ServiceReturns> r = new RoleService();
我们实例化了一个RoleService类型的对象,把它赋给了ServiceReturns> 类型的引用 r
(子类类型对象可以隐式转换成其父类类型的对象)
r.findAll……
正解 方法的返回值 可以返回当前对象的引用,也可以返回当前对象子类的引用。。