我有一个类文件名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;
}
}
答案 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;
字段通常不应该是公开的,但这是一个单独的讨论。