通过方法设置Java变量

时间:2014-08-23 00:54:36

标签: java variables methods

我有一个方法,它接受4个浮点数并修改该值。现在我想将父类的浮点数设置为方法所接受的值。一些代码:

public void influence(float x, float y, float w, float h){
x += 5; y += 5; w += 5; h += 5;
}

现在将从父类调用,如下所示:

float x = 5, y = 5, w = 5, h = 5;
influence(x, y, w, h);

我想将父级中的浮点数设置为修改后的方法。我知道我可以返回一个float[],然后手动将父类的浮点数设置为该数组,但有更好的方法吗?我也可以使用像Rect这样的类,但这就像一个数组。

2 个答案:

答案 0 :(得分:2)

Java无法传递对基元的引用。但是,在您的情况下,最好还是避免它:看起来四个变量彼此相关。

当几个变量相关时,它们应该是单个对象的实例变量。您的对象可能看起来像一个矩形框,其原点为(x, y),高度h和宽度w。为它创建一个类,让方法更改该类,或返回一个新实例:

class Rect {
    private final float x, y, w, h;
    public float getX() { return x; }
    public float getY() { return y; }
    public float getW() { return w; }
    public float getH() { return h; }
    public Rect(float x, float y, float w, float h) {
        this.x = x;
        this.y = y;
        this.w = w;
        this.h = h;
    }
}

然后你可以编写一个返回新Rect

的方法
public Rect influence(Rect inputRect) {
    ...
}

或使Rect变为可变,并让influence修改其值。

答案 1 :(得分:1)

你不能在Java中更改primitives,因为Java中的所有内容都是passed by value - 但您可以将值存储在数组中并传递它:

public void influence(float[] arr){
    for (int i=0; i<arr.length; i++){
        arr[i] += 5;
    }
}