java为什么类返回自身的实例?
我有一个抽象类
public abstract class MHandle {
public MHandle getMHandle(){
return this;
}
}
我还有一门课叫House
public class House extends MHandle{
public void methodA(){
}
}
做这样的事情有什么意义
public void methodA(){
MHandle mh = getMHandle();
}
# 1 楼答案
这两者之间绝对没有区别:
还有这个
还有这个
还有这个
这种差异在任何情况下都是正确的。在
MHandle
类或其具体子类(如House
)的内部,以及对MHandle
类具有或不具有访问权限的类。如果它所做的只是返回一个自引用,而没有做任何有用的事情,那么我根本看不到有getMHandle()
的意义# 2 楼答案
这将返回House实例,因为它扩展了MHandle
# 3 楼答案
一个方面可能是协方差:可以重写此方法以返回更具体的类型:
还有一个类似的应用程序称为“getThis()技巧”。它与协方差方面有关,并在这里详细解释:http://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html#FAQ206