mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 22:34:27 +02:00
8295370: Update java.io.ObjectStreamField to use Class.descriptorString
Reviewed-by: bpb, mchung
This commit is contained in:
parent
8487c56f7e
commit
2087424736
2 changed files with 6 additions and 59 deletions
|
@ -62,7 +62,6 @@ import jdk.internal.reflect.ReflectionFactory;
|
|||
import jdk.internal.access.SharedSecrets;
|
||||
import jdk.internal.access.JavaSecurityAccess;
|
||||
import sun.reflect.misc.ReflectUtil;
|
||||
import static java.io.ObjectStreamField.*;
|
||||
|
||||
/**
|
||||
* Serialization's descriptor for classes. It contains the name and
|
||||
|
@ -1564,10 +1563,10 @@ public final class ObjectStreamClass implements Serializable {
|
|||
StringBuilder sb = new StringBuilder();
|
||||
sb.append('(');
|
||||
for (int i = 0; i < paramTypes.length; i++) {
|
||||
appendClassSignature(sb, paramTypes[i]);
|
||||
sb.append(paramTypes[i].descriptorString());
|
||||
}
|
||||
sb.append(')');
|
||||
appendClassSignature(sb, retType);
|
||||
sb.append(retType.descriptorString());
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
|
@ -1881,7 +1880,7 @@ public final class ObjectStreamClass implements Serializable {
|
|||
public MemberSignature(Field field) {
|
||||
member = field;
|
||||
name = field.getName();
|
||||
signature = getClassSignature(field.getType());
|
||||
signature = field.getType().descriptorString();
|
||||
}
|
||||
|
||||
public MemberSignature(Constructor<?> cons) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 1996, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -124,58 +124,6 @@ public class ObjectStreamField
|
|||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns JVM type signature for given primitive.
|
||||
*/
|
||||
private static String getPrimitiveSignature(Class<?> cl) {
|
||||
if (cl == Integer.TYPE)
|
||||
return "I";
|
||||
else if (cl == Byte.TYPE)
|
||||
return "B";
|
||||
else if (cl == Long.TYPE)
|
||||
return "J";
|
||||
else if (cl == Float.TYPE)
|
||||
return "F";
|
||||
else if (cl == Double.TYPE)
|
||||
return "D";
|
||||
else if (cl == Short.TYPE)
|
||||
return "S";
|
||||
else if (cl == Character.TYPE)
|
||||
return "C";
|
||||
else if (cl == Boolean.TYPE)
|
||||
return "Z";
|
||||
else if (cl == Void.TYPE)
|
||||
return "V";
|
||||
else
|
||||
throw new InternalError();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns JVM type signature for given class.
|
||||
*/
|
||||
static String getClassSignature(Class<?> cl) {
|
||||
if (cl.isPrimitive()) {
|
||||
return getPrimitiveSignature(cl);
|
||||
} else {
|
||||
return appendClassSignature(new StringBuilder(), cl).toString();
|
||||
}
|
||||
}
|
||||
|
||||
static StringBuilder appendClassSignature(StringBuilder sbuf, Class<?> cl) {
|
||||
while (cl.isArray()) {
|
||||
sbuf.append('[');
|
||||
cl = cl.getComponentType();
|
||||
}
|
||||
|
||||
if (cl.isPrimitive()) {
|
||||
sbuf.append(getPrimitiveSignature(cl));
|
||||
} else {
|
||||
sbuf.append('L').append(cl.getName().replace('.', '/')).append(';');
|
||||
}
|
||||
|
||||
return sbuf;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an ObjectStreamField representing the given field with the
|
||||
* specified unshared setting. For compatibility with the behavior of
|
||||
|
@ -190,7 +138,7 @@ public class ObjectStreamField
|
|||
name = field.getName();
|
||||
Class<?> ftype = field.getType();
|
||||
type = (showType || ftype.isPrimitive()) ? ftype : Object.class;
|
||||
signature = getClassSignature(ftype).intern();
|
||||
signature = ftype.descriptorString().intern();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -347,7 +295,7 @@ public class ObjectStreamField
|
|||
// of the public constructors are used, in which case type is always
|
||||
// initialized to the exact type we want the signature to represent.
|
||||
if (sig == null) {
|
||||
typeSignature = sig = getClassSignature(type).intern();
|
||||
typeSignature = sig = type.descriptorString().intern();
|
||||
}
|
||||
return sig;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue