如何设置方法成为数组?

问题描述

| 我有一个文件名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;    
    }
}
    

解决方法

注意,此“ 4”将仅创建数组。所有元素仍然为null,因此在这些元素上调用方法(如
getName()
)将导致NullPointerException。您必须先初始化元素:
setData [0] = new serializedObject();
,然后在元素上调用调用方法。     ,首先,按照惯例,类名的首字母应大写,即“ 7”。在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
中的元素是
null
。     ,
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;
字段通常不应公开,但这是一个单独的讨论。