Android 为什么我的对象列表都是一样的?

Android 为什么我的对象列表都是一样的?,android,object,matrix,arraylist,opengl-es-2.0,Android,Object,Matrix,Arraylist,Opengl Es 2.0,我已经制作了一段时间的对象列表,以便在我编写的游戏中制作多个对象。到现在为止,我还没有遇到任何问题。我使用for循环来创建3个对象,给每个对象赋予自己的值,然后将它们添加到数组列表中。不幸的是,当我尝试这样做时,每个对象都有相同的值,我通过日志发现这些值是列表中最后一项的值。我不确定我做错了什么。这是我正在使用的代码(很抱歉,这太草率了,我现在只是想对这个项目的核心部分进行编程。我知道有很多无用的代码/编程不好的代码/编程错误的代码) GLCircle.java(我想对其进行多次复制的对象):

我已经制作了一段时间的对象列表,以便在我编写的游戏中制作多个对象。到现在为止,我还没有遇到任何问题。我使用for循环来创建3个对象,给每个对象赋予自己的值,然后将它们添加到数组列表中。不幸的是,当我尝试这样做时,每个对象都有相同的值,我通过日志发现这些值是列表中最后一项的值。我不确定我做错了什么。这是我正在使用的代码(很抱歉,这太草率了,我现在只是想对这个项目的核心部分进行编程。我知道有很多无用的代码/编程不好的代码/编程错误的代码)

GLCircle.java(我想对其进行多次复制的对象):

为什么所有对象都包含相同的值(例如x和y)?

答案很简单

您的x,y变量被声明为
静态
,这意味着对象的所有实例共享相同的变量

顺便说一下,这条线

GLCircle circle = new GLCircle(generateRanFloats()[0], generateRanFloats()[1]);

在做双重工作时,您调用GeneratorFloats两次,每次使用生成的信息的一半。

您的ranXXX变量都是浮动的吗?是的,它们都是浮动的。如果您一步一步地调试
GeneratorFloats()
函数,会发生什么?我已经通过记录每次通话产生的号码来调试它。每次我创建一个新对象时,我都调用该方法并记录数字。每次我调用它时,数字都不同,但是当我调用circles.get(1).x和circles.get(2).x时,它们都等于同一个数字,这是最后生成的x浮点。我不知道为什么我将其作为静态。。。谢谢是的,我意识到我调用生成方法两次,但只使用x或y。我只是想看看它是否管用。再次感谢。
for(int i = 0; i < 3; i++) {
            GLCircle circle = new GLCircle(generateRanFloats()[0], generateRanFloats()[1]);
            circles.add(circle);
            /*circle[i].x = circle[i].getX();
            circle[i].y = circle[i].getY();
            circle[i].bounds = circle[i].getBounds();*/
        }
public float[] generateRanFloats() {
        ranSignX = ran.nextFloat();
        ranSignY = ran.nextFloat();
        ranSignX = ranSignX > 0.5f? -1:1;
        ranSignY = ranSignY > 0.5f? -1:1;
        ranSignVeloX = ran.nextFloat();
        ranSignVeloY = ran.nextFloat();
        ranX = ran.nextFloat() * 1.05f;
        ranY = ran.nextFloat() * 1.75f;  
        ranX = ranSignX > 0.5? -ranX:ranX;
        ranY = ranSignY > 0.5? -ranY:ranY;
        Log.d("Generated", Float.toString(ranX));
        return new float[] {ranX, ranY};
    }
GLCircle circle = new GLCircle(generateRanFloats()[0], generateRanFloats()[1]);