Package org.apache.commons.io.input

# Class ClassLoaderObjectInputStream

java.lang.Object
java.io.InputStream
java.io.ObjectInputStream
org.apache.commons.io.input.ClassLoaderObjectInputStream

All Implemented Interfaces:
  `Closeable`, `DataInput`, `ObjectInput`, `ObjectStreamConstants`, `AutoCloseable`

public class ClassLoaderObjectInputStream extends ObjectInputStream
A special ObjectInputStream that loads a class based on a specified `ClassLoader` rather than the system default.

This is useful in dynamic container environments.

Since:
  1.1

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class java.io.ObjectInputStream

  `ObjectInputStream.GetField`

- ## Field Summary

  ### Fields inherited from interface java.io.ObjectStreamConstants

  `baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ClassLoaderObjectInputStream(ClassLoader classLoader, InputStream inputStream)`
  Constructs a new ClassLoaderObjectInputStream.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected Class<?>`
  `resolveClass(ObjectStreamClass objectStreamClass)`
  Resolve a class specified by the descriptor using the specified ClassLoader or the super ClassLoader.
  `protected Class<?>`
  `resolveProxyClass(String[] interfaces)`
  Create a proxy class that implements the specified interfaces using the specified ClassLoader or the super ClassLoader.

  ### Methods inherited from class java.io.ObjectInputStream

  `available, close, defaultReadObject, enableResolveObject, read, read, readBoolean, readByte, readChar, readClassDescriptor, readDouble, readFields, readFloat, readFully, readFully, readInt, readLine, readLong, readObject, readObjectOverride, readShort, readStreamHeader, readUnshared, readUnsignedByte, readUnsignedShort, readUTF, registerValidation, resolveObject, skipBytes`

  ### Methods inherited from class java.io.InputStream

  `mark, markSupported, read, reset, skip`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface java.io.ObjectInput

  `read, skip`

- ## Constructor Details

  - ### ClassLoaderObjectInputStream

    public ClassLoaderObjectInputStream(ClassLoader classLoader, InputStream inputStream) throws IOException, StreamCorruptedException
    Constructs a new ClassLoaderObjectInputStream.
    Parameters:
      `classLoader` - the ClassLoader from which classes should be loaded
      `inputStream` - the InputStream to work on
    Throws:
      `IOException` - in case of an I/O error
      `StreamCorruptedException` - if the stream is corrupted

- ## Method Details

  - ### resolveClass

    protected Class<?> resolveClass(ObjectStreamClass objectStreamClass) throws IOException, ClassNotFoundException
    Resolve a class specified by the descriptor using the specified ClassLoader or the super ClassLoader.
    Overrides:
      `resolveClass` in class `ObjectInputStream`
    Parameters:
      `objectStreamClass` - descriptor of the class
    Returns:
      the Class object described by the ObjectStreamClass
    Throws:
      `IOException` - in case of an I/O error
      `ClassNotFoundException` - if the Class cannot be found

  - ### resolveProxyClass

    protected Class<?> resolveProxyClass(String[] interfaces) throws IOException, ClassNotFoundException
    Create a proxy class that implements the specified interfaces using the specified ClassLoader or the super ClassLoader.
    Overrides:
      `resolveProxyClass` in class `ObjectInputStream`
    Parameters:
      `interfaces` - the interfaces to implement
    Returns:
      a proxy class implementing the interfaces
    Throws:
      `IOException` - in case of an I/O error
      `ClassNotFoundException` - if the Class cannot be found
    Since:
      2.1
    See Also:
      - `ObjectInputStream.resolveProxyClass(String[])`