繁体   English   中英

为什么类返回自身的实例?

[英]Why does a class return an instance of itself?

我有一个抽象类。

public abstract class MHandle {
    public MHandle getMHandle(){
        return this;
    }
}

我还有另一门课叫做House

public class House extends MHandle{
    public void methodA(){
    }
}

做这样的事情的意义是什么

public void methodA(){
    MHandle mh = getMHandle();
}

两者之间绝对没有区别:

public void methodA(){
   MHandle mh = getMHandle();
   mh.toString();
}

和这个

public void methodA(){
   this.toString();
}

和这个

public void methodA(){
   toString();
}

和这个

public void methodA(){
   this.getMHandle().getMHandle().getMHandle().getMHandle().
      getMHandle().getMHandle().toString();
}

这种差异在任何情况下都是正确的。 MHandle类或它的具体子类(例如House )的内部,以及在那些不能访问MHandle类的类的内部。 我根本看不到具有getMHandle()的意义,如果它所做的只是返回一个自引用而不做任何有用的事情

一方面可能是协方差:可以重写此方法以返回更特定的类型:

public abstract class MyMoreSpecificHandle extends MHandle {
    public MyMoreSpecificHandle getMHandle(){
        return this;
    }
}

还有一种类似的应用,称为“ getThis()技巧”。 它与协方差方面有关,在此处详细说明: http : //www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html#FAQ206

这将返回House实例,因为它扩展了MHandle。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM