我正在研究一些代码,其中有一个如下所示的方法:
nil
从我记忆的方式来看,这是#34; ProcessorClass"是一种返回类型,但这是什么意思。 " ProcessorClass"是该方法当前所在的类。我对这意味着什么感到困惑。
答案 0 :(得分:3)
检查此示例:
public class Ploop
{
int x;
private Ploop()
{
x = 0;
}
public static Ploop getInstance()
{
return new Ploop();
}
}
在这种情况下,getInstance()
函数是获取新Ploop
对象的唯一方法。如果构造函数是public
,则会有两种方式,new Ploop()
和Ploop.getInstance()
。
这会让事情更清楚吗?
答案 1 :(得分:1)
当方法使用类名作为其返回类型时,返回对象的类型的类必须是返回类型的子类或确切的类。
假设您具有一个类层次结构,其中ImaginaryNumber是java.lang.Number的子类,而java.lang.Number也是Object的子类,如下所示。
Object
|
Number
|
ImaginaryNumber
现在假设您已经声明了一个返回数字的方法:
public Number returnANumber() {
...
}
returnANumber方法可以返回ImaginaryNumber,但不能返回Object。 ImaginaryNumber是Number,因为它是Number的子类。但是,对象不一定是数字,它可以是字符串或其他类型。
您可以重写方法并定义它以返回原始方法的子类,如下所示:
public ImaginaryNumber returnANumber() {
...
}
这种称为协变返回类型的技术意味着允许返回类型在与子类相同的方向上变化。
答案 2 :(得分:0)
从本质上讲,如果方法返回某些内容,则返回类型可以是任何类型。您可以返回定义方法的同一类的实例。
ProcessorClass
是一种返回类型。您正在返回该类的实例。
例如
class ProcessorClass {
public ProcessorClass someMethod() {
return new ProcessorClass();
}
}
这里方法返回的是与类相同的类型。
class XYZ {
pubic ProcessorClass anotherMethod() {
return new ProcessorClass();
}
}
这里方法返回上面的类类型。