src/share/classes/java/io/ObjectStreamClass.java

Print this page




1455         String s = cl.getName();
1456         int i = s.lastIndexOf('[');
1457         if (i >= 0) {
1458             s = s.substring(i + 2);
1459         }
1460         i = s.lastIndexOf('.');
1461         return (i >= 0) ? s.substring(0, i) : "";
1462     }
1463 
1464     /**
1465      * Compares class names for equality, ignoring package names.  Returns true
1466      * if class names equal, false otherwise.
1467      */
1468     private static boolean classNamesEqual(String name1, String name2) {
1469         name1 = name1.substring(name1.lastIndexOf('.') + 1);
1470         name2 = name2.substring(name2.lastIndexOf('.') + 1);
1471         return name1.equals(name2);
1472     }
1473 
1474     /**


























1475      * Returns JVM type signature for given class.
1476      */
1477     private static String getClassSignature(Class<?> cl) {



1478         StringBuilder sbuf = new StringBuilder();
1479         while (cl.isArray()) {
1480             sbuf.append('[');
1481             cl = cl.getComponentType();
1482         }
1483         if (cl.isPrimitive()) {
1484             if (cl == Integer.TYPE) {
1485                 sbuf.append('I');
1486             } else if (cl == Byte.TYPE) {
1487                 sbuf.append('B');
1488             } else if (cl == Long.TYPE) {
1489                 sbuf.append('J');
1490             } else if (cl == Float.TYPE) {
1491                 sbuf.append('F');
1492             } else if (cl == Double.TYPE) {
1493                 sbuf.append('D');
1494             } else if (cl == Short.TYPE) {
1495                 sbuf.append('S');
1496             } else if (cl == Character.TYPE) {
1497                 sbuf.append('C');
1498             } else if (cl == Boolean.TYPE) {
1499                 sbuf.append('Z');
1500             } else if (cl == Void.TYPE) {
1501                 sbuf.append('V');
1502             } else {
1503                 throw new InternalError();
1504             }
1505         } else {
1506             sbuf.append('L' + cl.getName().replace('.', '/') + ';');
1507         }
1508         return sbuf.toString();
1509     }
1510 
1511     /**
1512      * Returns JVM type signature for given list of parameters and return type.
1513      */
1514     private static String getMethodSignature(Class<?>[] paramTypes,
1515                                              Class<?> retType)
1516     {
1517         StringBuilder sbuf = new StringBuilder();
1518         sbuf.append('(');
1519         for (int i = 0; i < paramTypes.length; i++) {
1520             sbuf.append(getClassSignature(paramTypes[i]));
1521         }
1522         sbuf.append(')');
1523         sbuf.append(getClassSignature(retType));
1524         return sbuf.toString();
1525     }
1526 
1527     /**




1455         String s = cl.getName();
1456         int i = s.lastIndexOf('[');
1457         if (i >= 0) {
1458             s = s.substring(i + 2);
1459         }
1460         i = s.lastIndexOf('.');
1461         return (i >= 0) ? s.substring(0, i) : "";
1462     }
1463 
1464     /**
1465      * Compares class names for equality, ignoring package names.  Returns true
1466      * if class names equal, false otherwise.
1467      */
1468     private static boolean classNamesEqual(String name1, String name2) {
1469         name1 = name1.substring(name1.lastIndexOf('.') + 1);
1470         name2 = name2.substring(name2.lastIndexOf('.') + 1);
1471         return name1.equals(name2);
1472     }
1473 
1474     /**
1475      * Returns JVM type signature for given primitive.
1476      */
1477     private static String getPrimitiveSignature(Class<?> cl) {
1478         if (cl == Integer.TYPE)
1479             return "I";
1480         else if (cl == Byte.TYPE)
1481             return "B";
1482         else if (cl == Long.TYPE)
1483             return "J";
1484         else if (cl == Float.TYPE)
1485             return "F";
1486         else if (cl == Double.TYPE)
1487             return "D";
1488         else if (cl == Short.TYPE)
1489             return "S";
1490         else if (cl == Character.TYPE)
1491             return "C";
1492         else if (cl == Boolean.TYPE)
1493             return "Z";
1494         else if (cl == Void.TYPE)
1495             return "V";
1496         else
1497             throw new InternalError();
1498     }
1499 
1500     /**
1501      * Returns JVM type signature for given class.
1502      */
1503     static String getClassSignature(Class<?> cl) {
1504         if (cl.isPrimitive())
1505             return getPrimitiveSignature(cl);
1506 
1507         StringBuilder sbuf = new StringBuilder();
1508         while (cl.isArray()) {
1509             sbuf.append('[');
1510             cl = cl.getComponentType();
1511         }
1512 
1513         if (cl.isPrimitive())
1514             sbuf.append(getPrimitiveSignature(cl));
1515         else
1516             sbuf.append('L').append(cl.getName().replace('.', '/')).append(';');
1517 



















1518         return sbuf.toString();
1519     }
1520 
1521     /**
1522      * Returns JVM type signature for given list of parameters and return type.
1523      */
1524     private static String getMethodSignature(Class<?>[] paramTypes,
1525                                              Class<?> retType)
1526     {
1527         StringBuilder sbuf = new StringBuilder();
1528         sbuf.append('(');
1529         for (int i = 0; i < paramTypes.length; i++) {
1530             sbuf.append(getClassSignature(paramTypes[i]));
1531         }
1532         sbuf.append(')');
1533         sbuf.append(getClassSignature(retType));
1534         return sbuf.toString();
1535     }
1536 
1537     /**