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……

正解  方法的返回值  可以返回当前对象的引用,也可以返回当前对象子类的引用。。

java返回有什么用,java中的return this什么时候用,返回的是类里面的方法类型,还是实例类?上面的代码什么意思...相关推荐

  1. java的setquality值多少_java使用JPEGEncodeParam类的setQuality方法进行高质量图片缩放类(转)...

    java使用JPEGEncodeParam类的setQuality方法进行高质量图片缩放类(转) 找了很多都不理想,最后找个到老外写的,不得不承认老外写的确实牛B 主要是:JPEGImageEncod ...

  2. java new class 直接调用_java中创建对象的的两种方式具体解释,一个是new一个是调用Class类的newinstance方法?...

    展开全部 1.new 使用java的关键字new来创建对象实例.构造函数链中的所有构造函数都32313133353236313431303231363533e78988e69d833133333739 ...

  3. java查询类提供的方法_查询一个类的方法和构建器的JAVA程序

    查询一个类的方法和构建器的JAVA程序 JAVA语言的类库中的类不计其数,其中设计的方法更是不胜其多,这是任何一个教科书--无论它是多么详尽--所不能穷尽的.如果我们要使用某个类,要查询它的构建器的用 ...

  4. php+方法返回多个参数,PHP中调用外部程序,及其参数与返回值

    用了一下午,终于弄明白了如何在PHP代码中调用外部程序. 在PHP中调用外部程序主要有两个函数,system和exec. system的原型为string system(string command ...

  5. 定义python函数时如果函数中没有return语句_定义Python函数时,如果函数中没有return语句,则默认返回空值None。...

    真题5年,定义坏账比例损失式是的公确定. 和作关于地位用经济法的,函数函数回空正确下列说法的是. )之行政听证外处罚除涉及(,果认返行都应当公开举,政处规定<行我国>的依据罚法. 者不责任 ...

  6. c语言调用system返回值,在C语言中获取用system函数调用shell的返回值

    一般我们调用shell脚本都用system()来实现,然后发现sytem返回值不好控制而且转换麻烦(还要右移4位即/256),于是我用popen来获取shell的返回值.果然在Unix世界里面,通道就 ...

  7. Java学习笔记二十:Java中的内部类

    Java中的内部类 一:什么是内部类: (1).什么是内部类呢? 内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. (2).那为什么要将一个类定 ...

  8. java servlet .net_JAVA学习之 Model2中的Servlet与.NET一般处理程序傻傻分不清楚

    时隔多日,多日合适吗,应该是时隔多月.我又想起了一般处理程序.这都是由于近期在实现的DRP系统中经经常使用到jsp+servlet达到界面与逻辑的分离.servlet负责处理从jsp传回的信息:每当这 ...

  9. java假死_分析java进程假死

    一.引言 1.编写目的 为了方便大家以后发现进程假死的时候能够正常的分析并且第一时间保留现场快照. 2.编写背景 最近服务器发现tomcat的应用会偶尔出现无法访问的情况.经过一段时间的观察最近又发现 ...

最新文章

  1. 一文告诉你,NIPS 2017有多火爆 | 附PPT、视频、代码大总结
  2. 2017程序员该为自己制定的12个小目标
  3. 选择排序的思想及其实现
  4. linux 时间会跳吗,linux系统时间暂时跳跃
  5. 树形结构 —— 并查集 —— 并查集的删除操作
  6. python有栈吗_Python栈实现
  7. 此“小霸王”非彼小霸王?官方声明:小霸王并未破产!
  8. Objective-C的Runtime System
  9. 创建虚拟目录http://localhost:1780/失败,错误:无法访问iis元数据库。您没用足够的特权访问计算机上的IIS网站...
  10. Python21天打卡Day13-生成器表达式
  11. 如何在 SQL Server 2005 故障转移群集中添加或删除节点(安装程序)
  12. elementUI table 绑定数据
  13. win10字体模糊设置
  14. 非线性微分方程 matlab,用ODE45求解Matlab中微分方程的非线性系统
  15. 研发管理工程师笔试题
  16. Java代码-List集合求交集、补集(差集)
  17. java 函数 throw_java为什么有些异常throw出去需要在函数头用throws声明,一些就不用。...
  18. 我读《格鲁夫给经理人的第一课》
  19. git查看函数修改历史
  20. 监控系统架构设计分层

热门文章

  1. python读出文件中的内容_Python读取文本内容
  2. R语言dplyr包filter函数通过逻辑条件过滤数据实战
  3. 随机森林(Random Forest)和梯度提升树(GBDT)有什么区别?
  4. centos中的mysql安装配置,Linux下安装配置MySQL
  5. C语言重点——指针篇(一篇让你完全搞懂指针)
  6. 论文阅读:FFDNet:Toward a Fast and Flexible Solution for CNN based Image Denoising
  7. 论文笔记 Medical Entity Linking using Triplet Network
  8. DeepDive-信息抽取工具安装教程
  9. tf.keras.losses.SparseCategoricalCrossentropy() 稀疏交叉熵 损失函数 示例
  10. 【计算机图形学】六面体旋转并实时切换虚线实线 - 代码实现