Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保存自定义类对象的数组_Java_Arrays_Multidimensional Array - Fatal编程技术网

Java 保存自定义类对象的数组

Java 保存自定义类对象的数组,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我想知道是否有一种简单的方法可以保存对象数组,而不必遍历并保存对象的各个方面。在我的示例中,我有两个数组,一个是单个数组,另一个是二维数组,其中包含引用自定义类的对象。每个对象都有特定的细节,如x和y整数、布尔值、字符串等。附加到它们(块[0].x,块[0].canWalk,块[0].name),我想知道是否有一种简单的方法可以将这些数组保存到文件中,而不必使用for循环并保存每个部分。多维数组只是与第一个数组相同的已保存数组的数组(savedBlock[0][0].x…) 到目前为止我拥有的(

我想知道是否有一种简单的方法可以保存对象数组,而不必遍历并保存对象的各个方面。在我的示例中,我有两个数组,一个是单个数组,另一个是二维数组,其中包含引用自定义类的对象。每个对象都有特定的细节,如x和y整数、布尔值、字符串等。附加到它们(块[0].x,块[0].canWalk,块[0].name),我想知道是否有一种简单的方法可以将这些数组保存到文件中,而不必使用for循环并保存每个部分。多维数组只是与第一个数组相同的已保存数组的数组(savedBlock[0][0].x…)

到目前为止我拥有的(抛出NotSerializableException):

显然,我在Map类中更改了不同数组的某些部分,我想知道是否有更简单的方法来保存块对象数组

谢谢你花时间来帮助我,如果你需要任何更具体的,请告诉我


I.D.

图像不可序列化,因此在序列化Blocks类时会收到NotSerializableException。ImageIcon可以序列化,因此在ImageIcons中包装图像实例将解决该问题

public class Blocks implements Serializable
{
    public boolean canWalk, onTop, itemTaken;
    public ImageIcon img = null, imgBack = null;
    public final ImageIcon (a ton of different images)
    public String name, item, message, title;
    public char initMap, initEx, initIt;
    public int x, y, height, width;

    public Blocks()
    {
        canWalk = true;
        onTop = false;
        itemTaken = false;
        img = null;
        // img = new ImageIcon(someImageInstance)
        name = null;
        item = null;
        message = null;
        x = 0;
        y = 0;
        height = 0;
        width = 0;
    }
}

映像不可序列化,因此在序列化Blocks类时会收到NotSerializableException。ImageIcon可以序列化,因此在ImageIcons中包装图像实例将解决该问题

public class Blocks implements Serializable
{
    public boolean canWalk, onTop, itemTaken;
    public ImageIcon img = null, imgBack = null;
    public final ImageIcon (a ton of different images)
    public String name, item, message, title;
    public char initMap, initEx, initIt;
    public int x, y, height, width;

    public Blocks()
    {
        canWalk = true;
        onTop = false;
        itemTaken = false;
        img = null;
        // img = new ImageIcon(someImageInstance)
        name = null;
        item = null;
        message = null;
        x = 0;
        y = 0;
        height = 0;
        width = 0;
    }
}

仅仅使一个类实现可序列化是不够的:所有字段也必须是可序列化的


您的
类可能有问题。所有常用的java类都是
可序列化的
,但是
Block
也有类型为
Image
的字段。如果
Image
不可
Serializable
,则尝试序列化
将引发
notserializableeexception

仅使类实现
可序列化
是不够的:所有字段也必须是
可序列化的


您的
类可能有问题。所有常用的java类都是
可序列化的
,但是
Block
也有类型为
Image
的字段。如果
Image
不可
Serializable
,那么尝试序列化
Block
将抛出
NotSerializableException
,它抛出相同的“NotSerializableException”,我很确定如果您有一个可序列化的类,那么该类的对象数组也是可序列化的。确保使用的是正确的Blocks对象。或者,您可以重写Blocks类中的writeObject和readObject,将字段添加到要序列化的数组中。@Vulcan您是正确的(我测试了它以确保):数组是可序列化的,只要它们的所有元素都是可序列化的。你知道Blocks类中的所有元素都是可序列化的吗?我会尝试使用ImageIcons,而不是抛出相同“NotSerializableException”的图像(不可序列化),我很确定如果你有一个可序列化的类,该类的对象数组也是可序列化的。确保使用的是正确的Blocks对象。或者,您可以重写Blocks类中的writeObject和readObject,将字段添加到要序列化的数组中。@Vulcan您是正确的(我测试了它以确保):数组是可序列化的,只要它们的所有元素都是可序列化的。你知道Blocks类中的所有元素是否都是可序列化的吗?我将尝试使用ImageIcons,而不是图像(不可序列化的)。谢谢,我将尝试将它们更改为ImageIcons(我很确定可以序列化),然后看看这会带我去哪里。谢谢,我将尝试将它们更改为ImageIcons(我非常确定它是可序列化的),然后看看这会把我带到哪里。
public class Blocks implements Serializable
{
    public boolean canWalk, onTop, itemTaken;
    public ImageIcon img = null, imgBack = null;
    public final ImageIcon (a ton of different images)
    public String name, item, message, title;
    public char initMap, initEx, initIt;
    public int x, y, height, width;

    public Blocks()
    {
        canWalk = true;
        onTop = false;
        itemTaken = false;
        img = null;
        // img = new ImageIcon(someImageInstance)
        name = null;
        item = null;
        message = null;
        x = 0;
        y = 0;
        height = 0;
        width = 0;
    }
}