public class Leaf{
  int i=0;
  Leaf (int i) {
    this.i=i;
 }
  Leaf increament(){
    i++;
    return this;//这是什么意思呢?return this得到的是什么呢?
  }
  
  void print (){
    System.out.println("i = "+i);
  }
  
  public static void main (String[] args){
    Leaf leaf = new Leaf (100);
    leaf.increament().increament().print();//该处不理解
 }
}文中标记的return this;//这是什么意思呢?return this得到的是什么呢?在一个类中定义该类类型的方法,我表示很不理解。另外,leaf.increament().increament().print();//该处不理解——这里连续调用两次increament这个方法,没掉用一次的作用是让i递增1,但是该方法的返回值类型是Leaf,怎么可以直接打印呢?

解决方案 »

  1.   

     leaf.increament().increament().print();//该处不理解
    相当于
     leaf.increament();
     leaf.increament();
     leaf.print();
      

  2.   

    这程序怪怪的~ 
    第一个return this 应该就是返回当前Leaf对象 i用于计数;
    leaf.increament().increament().print();//这个我还真是第一次见 不知是何用意
      

  3.   

    刚试了下  如楼上所说:
    leaf.increament().increament().print();
    相当于
     leaf.increament();
     leaf.increament();
     leaf.print();
      

  4.   

    “但是该方法的返回值类型是Leaf,怎么可以直接打印呢?”不是打印这个返回的对象,是它调用print这个方法
      

  5.   

    increament方法中的return this 返回调用increament方法的Leaf的对象实例
    第一次调用increament方法可以得到leaf的对象,然后用这个retrun this得到的对象继续 调用
    该对象的increament方法,继续返回leaf的对象然后再调用返回的对象的print方法------
      

  6.   

    leaf.increament().increament().print();//该处不理解就是相当于三步
    第一步,Leaf leaf1 = leaf.increament();//用Leaf对象来接收increament方法的返回值,leaf
    的成员i等于101
    第二步,Leaf leaf2 = leaf1.increament();//用Leaf对象来接收increament方法的返回值,leaf
    的成员i等于102
    第三步,leaf2.print();//打印出leaf2的i,102
      

  7.   

    return this;//这是什么意思呢?return this得到的是什么呢?
    this 指的是指向Leaf对象的一个引用。假如 Leaf l = new Leaf(); 那么这个this就相当于l。
    leaf.increament().increament().print();//该处不理解
    相当于:leaf.increament().increament().print(); = this.increament().print(); = this.print(); 每调用一次increament()方法 i就会自加1。print方法打印i的值。结果是102
      

  8.   

    return this;//这是什么意思呢?
    比如下面的代码:
    Leaf leaf = new Leaf (100);
    leaf.increament();
    leaf对象调用了方法increament(),该方法我们知道返回的类型是Leaf,也就是说
    该方法要返回一个Leaf类型的变量(一般我们习惯说成返回一个Leaf类型的对象)。
    那么该方法(increament())它返回的代码是:return this;也就是说返回的是
    一个Leaf类型的对象,this就是表示你当前调用这个方法的对象leaf,这里又把他返回出来了。所以这段代码就好理解了:
    leaf.increament().increament().print();
    先leaf.increament() 返回的是leaf
    然后leaf.increament().print();
    接着又是返回leaf
    然后leaf.print();楼主主要明白在java中this就是指当前引用的对象,那个对象调用方法或者属性当前的对象就是它,也
    就是指的是this。