189 8069 5689

浅谈Java中的this作为返回值时返回的是什么-创新互联

有时会遇到this作为返回值的情况,那么此时返回的到底是什么呢?

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、虚拟空间、营销软件、网站建设、卢氏网站维护、网站推广。

返回的是调用this所处方法的那个对象的引用,读起来有点绕口哈,有没有想起小学语文分析句子成份的试题,哈哈。

一点点分析的话,主干是“返回的是引用”;

什么引用呢?“那个对象的引用”;

哪个对象呢?“调用方法的那个对象”;

调用的哪个方法呢?“调用的是this所位于的方法”;这样就清楚了。

再总结一下就是,this作为返回值时,返回的是调用某方法的对象的引用,这个方法正是包含“return this;”这行命令的那个方法;更简单点说,就是谁调用返回的就是谁。

为了更清楚、直观的理解问题,下面以简单的例子说明。

包human中定义了Person类,代码如下:

package human;

public class Person {
 String name;
 int age;
 
 public Person() {
  
 }
 public Person(String n, String g) {
  name = n;
  gender = g;
 }

 
 //test:this作返回值
 Person reThis1() {
  Person per = new Person("lu","female");
  System.out.println("reThis1 per:" + per.name);
  return this;
 }
 Person reThis2() {
  Person per = reThis1();
  System.out.println("reThis2 per:" + per.name);
  return this;
 }
 Person reThis3() {
  name = "ma";
  return this;
 }
 static void equRefer(Person per1, Person per2) {
  if(per1 == per2)
   System.out.println("per1指向的对象没有改变,仍与per2指向同一个对象");
  else
   System.out.println("per1指向的对象已改变,与per2指向不同的对象");
  System.out.println("per1:" + per1.name);
  System.out.println("per2:" + per2.name);
 }
 
 public static void main(String[] args) {
  Person per1 = new Person("liu","female");
  Person per2 = per1;
  
  per1 = per1.reThis1();
  Person.equRefer(per1, per2);
   
  per1 = per1.reThis2();
  Person.equRefer(per1, per2);
  
  System.out.println("调用reThis3之前,per1.name=" + per1.name);
  per1 = per1.reThis3();
  System.out.println("调用reThis3之后,per1.name=" + per1.name);
 }
}

分享标题:浅谈Java中的this作为返回值时返回的是什么-创新互联
标题网址:http://cdxtjz.cn/article/ddehdp.html

其他资讯