作为方法中的返回值的类?

时间:2014-02-26 07:05:09

标签: java return return-type

如何创建返回类型为类的方法的返回值?这是一种查找两个数字之和的方法。 number对象是在另一个类中创建的,必须将其添加到'other'参数中。我不确定我是否正确地创建了该方法。如果类型是类,你将如何创建正确的返回值?

public class Number {
    private double a;
    private double b;

    public Number (double _a, double _b) {
            a = _a;
            b = _b;
    }

    public Number sum(Number other) {
            a = this.a + other.b;
            b = this.b + other.b;
            return ;
    }
}

3 个答案:

答案 0 :(得分:4)

  

如何创建返回类型为类的方法的返回值?

与处理任何其他参考用途的方式相同。

在您的情况下,您可以将代码更改为:

return this;

然而,添加给定的数字添加到现有的数字中,改变您调用方法的对象...有点像StringBuilder.append

我怀疑最好不要更改任何一个号码,而是创建一个新号码:

public Number sum(Number other) {
    return new Number(this.a + other.a, this.b + other.b);
}

(目前你根本没有使用other.a,但我认为这是一个错字。)

除了其他任何东西,你可以通过这种方式使你的类型不可变,这通常会让事情变得更容易理解。为此,请创建字段final并创建类final。我个人也会将方法名称更改为plus,但这是个人偏好的问题。

答案 1 :(得分:0)

在Java中,您只能返回类型为class的对象。

public Number sum(Number other,Number nobj) {
        a = nobj.a + other.b;
        b = nobj.b + other.b;
        return nobj;
}

答案 2 :(得分:0)

如果您关注的是返回传递给sum方法的相同类型(包括子类),您可以检查参数并返回该类型之一。

像...一样的东西。

public class Number {
    private double a;
    private double b;

    private Number () {}
    public Number (double _a, double _b) {
            a = _a;
            b = _b;
    }

    public Number sum(Number other) throws Exception {
            a = this.a + other.b;
            b = this.b + other.b;
            Number n = other.getClass().newInstance();
            n.a = a;
            n.b = b;
            return n;
    }
}

注意我也必须添加一个no-arg构造函数。