看到这么一段代码public class Ssh2Session 
{protected boolean rawOutput;
public boolean getRawOutput()
    {
        return Ssh2Session.this.rawOutput;    
}
}这里面的Ssh2Session.this.rawOutput;为什么这么用捏??请高手赐教!!

解决方案 »

  1.   

    还用一种用法:用eclipse时如果如果忘记某个方法或属性用this.会出现提示,此时这个this可要可不要。
      

  2.   

    第一次见这种写法,不知道什么意思,看这个例子中Ssh2Session.this.rawOutput和直接使用rawOutput是一样的。
    使用内部类的时候会见到类名.this的写法,尤其常见于事件处理的代码中.
      

  3.   

    哪位仁兄讲的能深入一点,为什么,和单纯调用rawOutput有什么区别 ,谢谢!
      

  4.   

    在你的例子中没有任何区别.
    你可以这样测试一下: 
    public class Test {    protected boolean rawOutput;    public boolean getRawOutput() {
            return Test.this.rawOutput;
        }    public boolean getRawOutput2() {
            return rawOutput;
        }
    }注意getRawOutput方法和getRawOutput2方法的区别就是Test.this这部分,对class文件进行反汇编,Compiled from "Test.java"
    public class Test extends java.lang.Object{
    protected boolean rawOutput;public Test();
      Code:
       0: aload_0
       1: invokespecial #1; //Method java/lang/Object."<init>":()V
       4: returnpublic boolean getRawOutput();
      Code:
       0: aload_0
       1: getfield #2; //Field rawOutput:Z
       4: ireturnpublic boolean getRawOutput2();
      Code:
       0: aload_0
       1: getfield #2; //Field rawOutput:Z
       4: ireturn}可以发现这两个方法是完全相同的,如果看不懂反汇编的代码,可以直接反编译,我使用的jd-gui.exe, 结果public class Test
    {
      protected boolean rawOutput;  public boolean getRawOutput()
      {
        return this.rawOutput;
      }  public boolean getRawOutput2() {
        return this.rawOutput;
      }
    }