如何设置方法成为数组?

时间:2011-04-15 13:42:02

标签: java arrays

我有一个类文件名serializedObject,我想在另一个类文件中调用这个类文件并使用它的方法。

我想声明类文件变成了和在另一个类文件中使用的数组。 然后我宣布如下:

serializedObject[] setData = new serializedObject[10];

并将其用于for循环

for(int i=0; i<clientInfo.length; i++)
{

double locationX = clientInfo[i].getLocation().getX();
double locationY = clientInfo[i].getLocation().getY();
String name = clientInfo[i].getName();
double mood = clientInfo[i].getMood();
double hunger = clientInfo[i].getHunger();
double chargestate = clientInfo[i].getChargestate();

setData[i].setAll(locationX, locationY, name, mood, hunger, chargestate);
System.out.println(setData[i].getName());

}

在serializedObject类中我有set方法和get方法, 但似乎不适合这个。我能做什么而不是这种方式来获得数组方法? 感谢您的任何评论和帮助。

系统似乎无法真正为我的方法设定价值, 我无法从

获得任何价值
System.out.println(setData[i].getName());

但系统没有任何编译错误。

这将是我的serializedObject类文件

public class serializedObject
{
    public static double locationX;
    public static double locationY;
    public static String name;
    public static double mood;
    public static double hunger;
    public static double chargestate;

    public serializedObject()
    {
    }


    public void setAll(double locationX,double locationY, String name,double mood,double hunger, double chargestate)
    {

        this.locationX = locationX;
        this.locationY = locationY;
        this.name = name;
        this.mood = mood;
        this.hunger = hunger;
        this.chargestate = chargestate;
    }

    public String getName()
    {
        return this.name;   
    }

    public double getLocationX()
    {
        return this.locationX;  
    }

    public double getLocationY()
    {
        return this.locationY;  
    }

    public double getMood()
    {
        return this.mood;   
    }

    public double getHunger()
    {
        return this.hunger; 
    }

    public double getChargestate()
    {
        return this.chargestate;    
    }
}

3 个答案:

答案 0 :(得分:3)

请注意,此serializedObject[] setData = new serializedObject[10];只会创建数组。所有元素仍为null,因此在这些元素上调用方法(如getName())将导致NullPointerException。您必须首先初始化元素:setData [0] = new serializedObject();然后在元素上调用call方法。

答案 1 :(得分:2)

首先,按惯例,类名的首字母应该大写,SerializedObject。在for循环中,您需要执行以下操作:

for(int i = 0; i < clientInfo.length; i++)
{
    // Construct new serialized object
    setData[i] = new SerializedObject();

    // Extract client information
    double locationX = clientInfo[i].getLocation().getX();
    double locationY = clientInfo[i].getLocation().getY();
    String name = clientInfo[i].getName();
    double mood = clientInfo[i].getMood();
    double hunger = clientInfo[i].getHunger();
    double chargestate = clientInfo[i].getChargestate();

    // Store information in serialized object
    setData[i].setAll(locationX, locationY, name, mood, hunger, chargestate);

    // Add serialized object to array
    System.out.println(setData[i].getName());

}

注意:目前,您的程序应该抛出 NullPointerException ,这应该让您知道setData中的元素是{{1 }}

答案 2 :(得分:0)

public static double locationX;
public static double locationY;
public static String name;
public static double mood;
public static double hunger;
public static double chargestate;

这些属性都是静态。这意味着它们将在serializedObject的所有实例之间共享。因此,如果您在一个实例上执行setAll,它似乎会更改每个其他实例。

您应该创建这些实例成员:

public double locationX;
public double locationY;
public String name;
public double mood;
public double hunger;
public double chargestate;

字段通常不应该是公开的,但这是一个单独的讨论。