Пример #1
0
  public void writeObject(ByteBuffer buffer, Object object) throws IOException {
    Collection collection = (Collection) object;
    int length = collection.size();

    buffer.putInt(length);
    if (length == 0) return;

    Iterator it = collection.iterator();
    Class elementClass = it.next().getClass();
    while (it.hasNext()) {
      Object obj = it.next();

      if (obj.getClass() != elementClass) {
        elementClass = null;
        break;
      }
    }

    if (elementClass != null) {
      buffer.put((byte) 1);
      Serializer.writeClass(buffer, elementClass);
      Serializer serializer = Serializer.getSerializer(elementClass);

      for (Object elem : collection) {
        serializer.writeObject(buffer, elem);
      }
    } else {
      buffer.put((byte) 0);
      for (Object elem : collection) {
        Serializer.writeClassAndObject(buffer, elem);
      }
    }
  }