[Bug java/20169] New: Serialization: readResolve does not work
bonniot at users dot sf dot net
gcc-bugzilla@gcc.gnu.org
Wed Feb 23 16:06:00 GMT 2005
I attach a simple Java class, which exercises the readResolve method. An object
is serialzed and deserialized from a byte array. Because of the readResolve
method, the object read back should be the exact same instance. This works with
JDK, but fails with both gij and gcj, as of today. It also fails with other free
runtimes: kaffe (1.1.4.PRECVS8) and jamvm (1.2.3), so it could be a GNU
classpath issue.
Here is the testcase:
///////////////////////////////////
import java.io.*;
public abstract class Enum implements Serializable
{
static Enum instance;
Object readResolve() {
return instance;
}
static class Color extends Enum
{
static final Color red = new Color();
static { instance = red; }
}
public static void main(String[] args)
{
try {
ByteArrayOutputStream outb = new ByteArrayOutputStream();
ObjectOutputStream outs = new ObjectOutputStream(outb);
outs.writeObject(Color.red);
byte[] store = outb.toByteArray();
ByteArrayInputStream inb = new ByteArrayInputStream(store);
ObjectInputStream ins = new ObjectInputStream(inb);
Color color = (Color) ins.readObject();
System.out.println(color);
System.out.println(Color.red);
System.out.println(color == Color.red);
}
catch (Throwable e) {
throw new Error(e);
}
}
}
//////////////////////////////////////
Here is what happens:
/tmp/gcc/bin/gcj -C Enum.java
#### JDK: java Enum
Enum$Color@1cfb549
Enum$Color@1cfb549
true
#### GIJ: LD_LIBRARY_PATH=/tmp/gcc/lib /tmp/gcc/bin/gij Enum
Enum$Color@58c78
Enum$Color@58eb8
false
#### GCJ: /tmp/gcc/bin/gcj --main=Enum *.class
LD_LIBRARY_PATH=/tmp/gcc/lib ./a.out
Enum$Color@58cd0
Enum$Color@58f20
false
/tmp/gcc/bin/gcj --version
gcj (GCC) 4.0.0 20050223 (experimental)
--
Summary: Serialization: readResolve does not work
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: java
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bonniot at users dot sf dot net
CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu
dot org
GCC host triplet: i386-debian-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20169
More information about the Java-prs
mailing list