Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)

# Serializable

```
interface Serializable
```

|---|
| [java.io.Serializable](https://developer.android.com/reference/kotlin/java/io/Serializable#) |

|---|
| Known Direct Subclasses [AbstractMap.SimpleEntry](https://developer.android.com/reference/kotlin/java/util/AbstractMap.SimpleEntry.html#), [AbstractMap.SimpleImmutableEntry](https://developer.android.com/reference/kotlin/java/util/AbstractMap.SimpleImmutableEntry.html#), [AbstractOwnableSynchronizer](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractOwnableSynchronizer.html#), [AbstractQueuedLongSynchronizer](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.html#), [AbstractQueuedLongSynchronizer.ConditionObject](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.ConditionObject.html#), [AbstractQueuedSynchronizer](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedSynchronizer.html#), [AbstractQueuedSynchronizer.ConditionObject](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedSynchronizer.ConditionObject.html#), [ArrayBlockingQueue](https://developer.android.com/reference/kotlin/java/util/concurrent/ArrayBlockingQueue.html#), [ArrayDeque](https://developer.android.com/reference/kotlin/java/util/ArrayDeque.html#), [ArrayList](https://developer.android.com/reference/kotlin/java/util/ArrayList.html#), [AtomicBoolean](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/AtomicBoolean.html#), [AtomicInteger](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/AtomicInteger.html#), and 152 others. |---|---| | [AbstractMap.SimpleEntry](https://developer.android.com/reference/kotlin/java/util/AbstractMap.SimpleEntry.html#) | An Entry maintaining a key and a value. | | [AbstractMap.SimpleImmutableEntry](https://developer.android.com/reference/kotlin/java/util/AbstractMap.SimpleImmutableEntry.html#) | An unmodifiable Entry maintaining a key and a value. | | [AbstractOwnableSynchronizer](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractOwnableSynchronizer.html#) | A synchronizer that may be exclusively owned by a thread. | | [AbstractQueuedLongSynchronizer](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.html#) | A version of `https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedSynchronizer.html#` in which synchronization state is maintained as a `long`. | | [AbstractQueuedLongSynchronizer.ConditionObject](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.ConditionObject.html#) | Condition implementation for a `https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.html#` serving as the basis of a `https://developer.android.com/reference/kotlin/java/util/concurrent/locks/Lock.html#` implementation. | | [AbstractQueuedSynchronizer](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedSynchronizer.html#) | Provides a framework for implementing blocking locks and related synchronizers (semaphores, events, etc) that rely on first-in-first-out (FIFO) wait queues. | | [AbstractQueuedSynchronizer.ConditionObject](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedSynchronizer.ConditionObject.html#) | Condition implementation for a `https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedSynchronizer.html#` serving as the basis of a `https://developer.android.com/reference/kotlin/java/util/concurrent/locks/Lock.html#` implementation. | | [ArrayBlockingQueue](https://developer.android.com/reference/kotlin/java/util/concurrent/ArrayBlockingQueue.html#) | A bounded [blocking queue](https://developer.android.com/reference/kotlin/java/util/concurrent/BlockingQueue.html#) backed by an array. | | [ArrayDeque](https://developer.android.com/reference/kotlin/java/util/ArrayDeque.html#) | Resizable-array implementation of the `https://developer.android.com/reference/kotlin/java/util/Deque.html#` interface. | | [ArrayList](https://developer.android.com/reference/kotlin/java/util/ArrayList.html#) | Resizable-array implementation of the `List` interface. | | [AtomicBoolean](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/AtomicBoolean.html#) | A `boolean` value that may be updated atomically. | | [AtomicInteger](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/AtomicInteger.html#) | An `int` value that may be updated atomically. | | [AtomicIntegerArray](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/AtomicIntegerArray.html#) | An `int` array in which elements may be updated atomically. | | [AtomicLong](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/AtomicLong.html#) | A `long` value that may be updated atomically. | | [AtomicLongArray](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/AtomicLongArray.html#) | A `long` array in which elements may be updated atomically. | | [AtomicReference](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/AtomicReference.html#) | An object reference that may be updated atomically. | | [AtomicReferenceArray](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/AtomicReferenceArray.html#) | An array of object references in which elements may be updated atomically. | | [AttributedCharacterIterator.Attribute](https://developer.android.com/reference/kotlin/java/text/AttributedCharacterIterator.Attribute.html#) | Defines attribute keys that are used to identify text attributes. | | [BasicPermission](https://developer.android.com/reference/kotlin/java/security/BasicPermission.html#) | Android doesn't support `https://developer.android.com/reference/kotlin/java/lang/SecurityManager.html#`. | | [BigDecimal](https://developer.android.com/reference/kotlin/android/icu/math/BigDecimal.html#) | The `BigDecimal` class implements immutable arbitrary-precision decimal numbers. | | [BitSet](https://developer.android.com/reference/kotlin/java/util/BitSet.html#) | This class implements a vector of bits that grows as needed. | | [Boolean](https://developer.android.com/reference/kotlin/java/lang/Boolean.html#) | The Boolean class wraps a value of the primitive type `boolean` in an object. | | [Calendar](https://developer.android.com/reference/kotlin/java/util/Calendar.html#) | The class is an abstract class that provides methods for converting between a specific instant in time and a set of `https://developer.android.com/reference/kotlin/java/util/Calendar.html#fields:kotlin.IntArray` such as `YEAR``MONTH``DAY_OF_MONTH``HOUR`, and so on, and for manipulating the calendar fields, such as getting the date of the next week. | | [Calendar](https://developer.android.com/reference/kotlin/android/icu/util/Calendar.html#) | **\[icu enhancement\]** ICU's replacement for `https://developer.android.com/reference/kotlin/java/util/Calendar.html#`. | | [CertPath](https://developer.android.com/reference/kotlin/java/security/cert/CertPath.html#) | An immutable sequence of certificates (a certification path). | | [CertPath.CertPathRep](https://developer.android.com/reference/kotlin/java/security/cert/CertPath.CertPathRep.html#) | Alternate `CertPath` class for serialization. | | [CertPathValidatorException.Reason](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.Reason.html#) | The reason the validation algorithm failed. | | [Certificate](https://developer.android.com/reference/kotlin/java/security/cert/Certificate.html#) | Abstract class for managing a variety of identity certificates. | | [Certificate.CertificateRep](https://developer.android.com/reference/kotlin/java/security/cert/Certificate.CertificateRep.html#) | Alternate Certificate class for serialization. | | [Character](https://developer.android.com/reference/kotlin/java/lang/Character.html#) | The `Character` class is the java. | | [Class](https://developer.android.com/reference/kotlin/java/lang/Class.html#) | Instances of the class represent classes and interfaces in a running Java application. | | [CodeSigner](https://developer.android.com/reference/kotlin/java/security/CodeSigner.html#) | This class encapsulates information about a code signer. | | [CodeSource](https://developer.android.com/reference/kotlin/java/security/CodeSource.html#) | Legacy security code; do not use. | | [ConcurrentHashMap](https://developer.android.com/reference/kotlin/java/util/concurrent/ConcurrentHashMap.html#) | A hash table supporting full concurrency of retrievals and high expected concurrency for updates. | | [ConcurrentHashMap.KeySetView](https://developer.android.com/reference/kotlin/java/util/concurrent/ConcurrentHashMap.KeySetView.html#) | A view of a ConcurrentHashMap as a `https://developer.android.com/reference/kotlin/java/util/Set.html#` of keys, in which additions may optionally be enabled by mapping to a common value. | | [ConcurrentLinkedDeque](https://developer.android.com/reference/kotlin/java/util/concurrent/ConcurrentLinkedDeque.html#) | An unbounded concurrent [deque](https://developer.android.com/reference/kotlin/java/util/Deque.html#) based on linked nodes. | | [ConcurrentLinkedQueue](https://developer.android.com/reference/kotlin/java/util/concurrent/ConcurrentLinkedQueue.html#) | An unbounded thread-safe [queue](https://developer.android.com/reference/kotlin/java/util/Queue.html#) based on linked nodes. | | [ConcurrentSkipListMap](https://developer.android.com/reference/kotlin/java/util/concurrent/ConcurrentSkipListMap.html#) | A scalable concurrent `https://developer.android.com/reference/kotlin/java/util/concurrent/ConcurrentNavigableMap.html#` implementation. | | [ConcurrentSkipListSet](https://developer.android.com/reference/kotlin/java/util/concurrent/ConcurrentSkipListSet.html#) | A scalable concurrent `https://developer.android.com/reference/kotlin/java/util/NavigableSet.html#` implementation based on a `https://developer.android.com/reference/kotlin/java/util/concurrent/ConcurrentSkipListMap.html#`. | | [CopyOnWriteArrayList](https://developer.android.com/reference/kotlin/java/util/concurrent/CopyOnWriteArrayList.html#) | A thread-safe variant of `https://developer.android.com/reference/kotlin/java/util/ArrayList.html#` in which all mutative operations (`add`, `set`, and so on) are implemented by making a fresh copy of the underlying array. | | [CopyOnWriteArraySet](https://developer.android.com/reference/kotlin/java/util/concurrent/CopyOnWriteArraySet.html#) | A `https://developer.android.com/reference/kotlin/java/util/Set.html#` that uses an internal `https://developer.android.com/reference/kotlin/java/util/concurrent/CopyOnWriteArrayList.html#` for all of its operations. | | [Currency](https://developer.android.com/reference/kotlin/java/util/Currency.html#) | Represents a currency. | | [CurrencyPluralInfo](https://developer.android.com/reference/kotlin/android/icu/text/CurrencyPluralInfo.html#) | This class represents the information needed by DecimalFormat to format currency plural, such as "3. | | [Date](https://developer.android.com/reference/kotlin/java/util/Date.html#) | The class `Date` represents a specific instant in time, with millisecond precision. | | [DateFormatSymbols](https://developer.android.com/reference/kotlin/java/text/DateFormatSymbols.html#) | `DateFormatSymbols` is a public class for encapsulating localizable date-time formatting data, such as the names of the months, the names of the days of the week, and the time zone data. | | [DateFormatSymbols](https://developer.android.com/reference/kotlin/android/icu/text/DateFormatSymbols.html#) | **\[icu enhancement\]** ICU's replacement for `https://developer.android.com/reference/kotlin/java/text/DateFormatSymbols.html#`. | | [DateInterval](https://developer.android.com/reference/kotlin/android/icu/util/DateInterval.html#) | This class represents date interval. | | [DateIntervalInfo](https://developer.android.com/reference/kotlin/android/icu/text/DateIntervalInfo.html#) | DateIntervalInfo is a public class for encapsulating localizable date time interval patterns. | | [DateIntervalInfo.PatternInfo](https://developer.android.com/reference/kotlin/android/icu/text/DateIntervalInfo.PatternInfo.html#) | PatternInfo class saves the first and second part of interval pattern, and whether the interval pattern is earlier date first. | | [DecimalFormatSymbols](https://developer.android.com/reference/kotlin/java/text/DecimalFormatSymbols.html#) | This class represents the set of symbols (such as the decimal separator, the grouping separator, and so on) needed by `DecimalFormat` to format numbers. | | [DecimalFormatSymbols](https://developer.android.com/reference/kotlin/android/icu/text/DecimalFormatSymbols.html#) | **\[icu enhancement\]** ICU's replacement for `https://developer.android.com/reference/kotlin/java/text/DecimalFormatSymbols.html#`. | | [DoubleAccumulator](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/DoubleAccumulator.html#) | One or more variables that together maintain a running `double` value updated using a supplied function. | | [DoubleAdder](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/DoubleAdder.html#) | One or more variables that together maintain an initially zero `double` sum. | | [Duration](https://developer.android.com/reference/kotlin/java/time/Duration.html#) | A time-based amount of time, such as '34. | | [Enum](https://developer.android.com/reference/kotlin/java/lang/Enum.html#) | This is the common base class of all Java language enumeration classes. | | [EnumMap](https://developer.android.com/reference/kotlin/java/util/EnumMap.html#) | A specialized `https://developer.android.com/reference/kotlin/java/util/Map.html#` implementation for use with enum type keys. | | [EnumSet](https://developer.android.com/reference/kotlin/java/util/EnumSet.html#) | A specialized `https://developer.android.com/reference/kotlin/java/util/Set.html#` implementation for use with enum types. | | [EventObject](https://developer.android.com/reference/kotlin/java/util/EventObject.html#) | The root class from which all event state objects shall be derived. | | [Externalizable](https://developer.android.com/reference/kotlin/java/io/Externalizable) | Only the identity of the class of an Externalizable instance is written in the serialization stream and it is the responsibility of the class to save and restore the contents of its instances. | | [File](https://developer.android.com/reference/kotlin/java/io/File) | An abstract representation of file and directory pathnames. | | [FilePermission](https://developer.android.com/reference/kotlin/java/io/FilePermission) | Legacy security code; do not use. | | [ForkJoinTask](https://developer.android.com/reference/kotlin/java/util/concurrent/ForkJoinTask.html#) | Abstract base class for tasks that run within a `https://developer.android.com/reference/kotlin/java/util/concurrent/ForkJoinPool.html#`. | | [Format](https://developer.android.com/reference/kotlin/java/text/Format.html#) | `Format` is an abstract base class for formatting locale-sensitive information such as dates, messages, and numbers. | | [GuardedObject](https://developer.android.com/reference/kotlin/java/security/GuardedObject.html#) | A GuardedObject is an object that is used to protect access to another object. | | [HashMap](https://developer.android.com/reference/kotlin/java/util/HashMap.html#) | Hash table based implementation of the `Map` interface. | | [HashSet](https://developer.android.com/reference/kotlin/java/util/HashSet.html#) | This class implements the `Set` interface, backed by a hash table (actually a `HashMap` instance). | | [Hashtable](https://developer.android.com/reference/kotlin/java/util/Hashtable.html#) | This class implements a hash table, which maps keys to values. | | [HijrahChronology](https://developer.android.com/reference/kotlin/java/time/chrono/HijrahChronology.html#) | The Hijrah calendar is a lunar calendar supporting Islamic calendars. | | [HijrahDate](https://developer.android.com/reference/kotlin/java/time/chrono/HijrahDate.html#) | A date in the Hijrah calendar system. | | [Identity](https://developer.android.com/reference/kotlin/java/security/Identity.html#) | This class represents identities: real-world objects such as people, companies or organizations whose identities can be authenticated using their public keys. | | [IdentityHashMap](https://developer.android.com/reference/kotlin/java/util/IdentityHashMap.html#) | This class implements the `Map` interface with a hash table, using reference-equality in place of object-equality when comparing keys (and values). | | [InetAddress](https://developer.android.com/reference/kotlin/java/net/InetAddress.html#) | This class represents an Internet Protocol (IP) address. | | [Instant](https://developer.android.com/reference/kotlin/java/time/Instant.html#) | An instantaneous point on the time-line. | | [IsoChronology](https://developer.android.com/reference/kotlin/java/time/chrono/IsoChronology.html#) | The ISO calendar system. | | [JapaneseChronology](https://developer.android.com/reference/kotlin/java/time/chrono/JapaneseChronology.html#) | The Japanese Imperial calendar system. | | [JapaneseDate](https://developer.android.com/reference/kotlin/java/time/chrono/JapaneseDate.html#) | A date in the Japanese Imperial calendar system. | | [JapaneseEra](https://developer.android.com/reference/kotlin/java/time/chrono/JapaneseEra.html#) | An era in the Japanese Imperial calendar system. | | [Key](https://developer.android.com/reference/kotlin/java/security/Key.html#) | The Key interface is the top-level interface for all keys. | | [KeyPair](https://developer.android.com/reference/kotlin/java/security/KeyPair.html#) | This class is a simple holder for a key pair (a public key and a private key). | | [KeyRep](https://developer.android.com/reference/kotlin/java/security/KeyRep.html#) | Standardized representation for serialized Key objects. | | [Level](https://developer.android.com/reference/kotlin/java/util/logging/Level.html#) | The Level class defines a set of standard logging levels that can be used to control logging output. | | [LinkedBlockingDeque](https://developer.android.com/reference/kotlin/java/util/concurrent/LinkedBlockingDeque.html#) | An optionally-bounded [blocking deque](https://developer.android.com/reference/kotlin/java/util/concurrent/BlockingDeque.html#) based on linked nodes. | | [LinkedBlockingQueue](https://developer.android.com/reference/kotlin/java/util/concurrent/LinkedBlockingQueue.html#) | An optionally-bounded [blocking queue](https://developer.android.com/reference/kotlin/java/util/concurrent/BlockingQueue.html#) based on linked nodes. | | [LinkedHashSet](https://developer.android.com/reference/kotlin/java/util/LinkedHashSet.html#) | Hash table and linked list implementation of the `Set` interface, with well-defined encounter order. | | [LinkedList](https://developer.android.com/reference/kotlin/java/util/LinkedList.html#) | Doubly-linked list implementation of the `List` and `Deque` interfaces. | | [LinkedTransferQueue](https://developer.android.com/reference/kotlin/java/util/concurrent/LinkedTransferQueue.html#) | An unbounded `https://developer.android.com/reference/kotlin/java/util/concurrent/TransferQueue.html#` based on linked nodes. | | [LocalDate](https://developer.android.com/reference/kotlin/java/time/LocalDate.html#) | A date without a time-zone in the ISO-8601 calendar system, such as `2007-12-03`. | | [LocalDateTime](https://developer.android.com/reference/kotlin/java/time/LocalDateTime.html#) | A date-time without a time-zone in the ISO-8601 calendar system, such as `2007-12-03T10:15:30`. | | [LocalTime](https://developer.android.com/reference/kotlin/java/time/LocalTime.html#) | A time without a time-zone in the ISO-8601 calendar system, such as `10:15:30`. | | [Locale](https://developer.android.com/reference/kotlin/java/util/Locale.html#) | A object represents a specific geographical, political, or cultural region. | | [LogRecord](https://developer.android.com/reference/kotlin/java/util/logging/LogRecord.html#) | LogRecord objects are used to pass logging requests between the logging framework and individual log Handlers. | | [LongAccumulator](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/LongAccumulator.html#) | One or more variables that together maintain a running `long` value updated using a supplied function. | | [LongAdder](https://developer.android.com/reference/kotlin/java/util/concurrent/atomic/LongAdder.html#) | One or more variables that together maintain an initially zero `long` sum. | | [MathContext](https://developer.android.com/reference/kotlin/java/math/MathContext.html#) | Immutable objects which encapsulate the context settings which describe certain rules for numerical operators, such as those implemented by the `https://developer.android.com/reference/kotlin/java/math/BigDecimal.html#` class. | | [MathContext](https://developer.android.com/reference/kotlin/android/icu/math/MathContext.html#) | The `MathContext` immutable class encapsulates the settings understood by the operator methods of the `https://developer.android.com/reference/kotlin/android/icu/math/BigDecimal.html#` class (and potentially other classes). | | [MeasureUnit](https://developer.android.com/reference/kotlin/android/icu/util/MeasureUnit.html#) | A unit such as length, mass, volume, currency, etc. | | [MethodType](https://developer.android.com/reference/kotlin/java/lang/invoke/MethodType.html#) | A method type represents the arguments and return type accepted and returned by a method handle, or the arguments and return type passed and expected by a method handle caller. | | [MinguoChronology](https://developer.android.com/reference/kotlin/java/time/chrono/MinguoChronology.html#) | The Minguo calendar system. | | [MinguoDate](https://developer.android.com/reference/kotlin/java/time/chrono/MinguoDate.html#) | A date in the Minguo calendar system. | | [MonthDay](https://developer.android.com/reference/kotlin/java/time/MonthDay.html#) | A month-day in the ISO-8601 calendar system, such as `--12-03`. | | [Number](https://developer.android.com/reference/kotlin/java/lang/Number.html#) | The abstract class `Number` is the superclass of platform classes representing numeric values that are convertible to the primitive types `byte`, `double`, `float`, `int`, `long`, and `short`. | | [NumericShaper](https://developer.android.com/reference/kotlin/java/awt/font/NumericShaper.html#) | The class is used to convert Latin-1 (European) digits to other Unicode decimal digits. | | [ObjectStreamClass](https://developer.android.com/reference/kotlin/java/io/ObjectStreamClass) | Serialization's descriptor for classes. | | [OffsetDateTime](https://developer.android.com/reference/kotlin/java/time/OffsetDateTime.html#) | A date-time with an offset from UTC/Greenwich in the ISO-8601 calendar system, such as `2007-12-03T10:15:30+01:00`. | | [OffsetTime](https://developer.android.com/reference/kotlin/java/time/OffsetTime.html#) | A time with an offset from UTC/Greenwich in the ISO-8601 calendar system, such as `10:15:30+01:00`. | | [PasswordCallback](https://developer.android.com/reference/kotlin/javax/security/auth/callback/PasswordCallback.html#) | Underlying security services instantiate and pass a `PasswordCallback` to the `handle` method of a `CallbackHandler` to retrieve password information. | | [Pattern](https://developer.android.com/reference/kotlin/java/util/regex/Pattern.html#) | A compiled representation of a regular expression. | | [Period](https://developer.android.com/reference/kotlin/java/time/Period.html#) | A date-based amount of time in the ISO-8601 calendar system, such as '2 years, 3 months and 4 days'. | | [Permission](https://developer.android.com/reference/kotlin/java/security/Permission.html#) | Android doesn't support `https://developer.android.com/reference/kotlin/java/lang/SecurityManager.html#`. | | [PermissionCollection](https://developer.android.com/reference/kotlin/java/security/PermissionCollection.html#) | Android doesn't support `https://developer.android.com/reference/kotlin/java/lang/SecurityManager.html#`. | | [Permissions](https://developer.android.com/reference/kotlin/java/security/Permissions.html#) | Android doesn't support `https://developer.android.com/reference/kotlin/java/lang/SecurityManager.html#`. | | [PluralRules](https://developer.android.com/reference/kotlin/android/icu/text/PluralRules.html#) | Defines rules for mapping non-negative numeric values onto a small set of keywords. | | [PriorityBlockingQueue](https://developer.android.com/reference/kotlin/java/util/concurrent/PriorityBlockingQueue.html#) | An unbounded [blocking queue](https://developer.android.com/reference/kotlin/java/util/concurrent/BlockingQueue.html#) that uses the same ordering rules as class `https://developer.android.com/reference/kotlin/java/util/PriorityQueue.html#` and supplies blocking retrieval operations. | | [PriorityQueue](https://developer.android.com/reference/kotlin/java/util/PriorityQueue.html#) | An unbounded priority [queue](https://developer.android.com/reference/kotlin/java/util/Queue.html#) based on a priority heap. | | [PropertyChangeSupport](https://developer.android.com/reference/kotlin/java/beans/PropertyChangeSupport.html#) | This is a utility class that can be used by beans that support bound properties. | | [Proxy](https://developer.android.com/reference/kotlin/java/lang/reflect/Proxy.html#) | `Proxy` provides static methods for creating dynamic proxy classes and instances, and it is also the superclass of all dynamic proxy classes created by those methods. | | [QName](https://developer.android.com/reference/kotlin/javax/xml/namespace/QName.html#) | `QName` represents a **qualified name** as defined in the XML specifications: [XML Schema Part2: Datatypes specification](http://www.w3.org/TR/xmlschema-2/#QName), [Namespaces in XML](http://www.w3.org/TR/REC-xml-names/#ns-qualnames), [Namespaces in XML Errata](http://www.w3.org/XML/xml-names-19990114-errata). | | [Random](https://developer.android.com/reference/kotlin/java/util/Random.html#) | An instance of this class is used to generate a stream of pseudorandom numbers; its period is only 248. | | [ReentrantLock](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/ReentrantLock.html#) | A reentrant mutual exclusion `https://developer.android.com/reference/kotlin/java/util/concurrent/locks/Lock.html#` with the same basic behavior and semantics as the implicit monitor lock accessed using `synchronized` methods and statements, but with extended capabilities. | | [ReentrantReadWriteLock](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/ReentrantReadWriteLock.html#) | An implementation of `https://developer.android.com/reference/kotlin/java/util/concurrent/locks/ReadWriteLock.html#` supporting similar semantics to `https://developer.android.com/reference/kotlin/java/util/concurrent/locks/ReentrantLock.html#`. | | [ReentrantReadWriteLock.ReadLock](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/ReentrantReadWriteLock.ReadLock.html#) | The lock returned by method `https://developer.android.com/reference/kotlin/java/util/concurrent/locks/ReentrantReadWriteLock.html#readLock()`. | | [ReentrantReadWriteLock.WriteLock](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/ReentrantReadWriteLock.WriteLock.html#) | The lock returned by method `https://developer.android.com/reference/kotlin/java/util/concurrent/locks/ReentrantReadWriteLock.html#writeLock()`. | | [SealedObject](https://developer.android.com/reference/kotlin/javax/crypto/SealedObject.html#) | This class enables a programmer to create an object and protect its confidentiality with a cryptographic algorithm. | | [SecureRandomSpi](https://developer.android.com/reference/kotlin/java/security/SecureRandomSpi.html#) | This class defines the *Service Provider Interface* (**SPI** ) for the `https://developer.android.com/reference/kotlin/java/security/SecureRandom.html#` class. | | [Semaphore](https://developer.android.com/reference/kotlin/java/util/concurrent/Semaphore.html#) | A counting semaphore. | | [SignedObject](https://developer.android.com/reference/kotlin/java/security/SignedObject.html#) | SignedObject is a class for the purpose of creating authentic runtime objects whose integrity cannot be compromised without being detected. | | [SipProfile](https://developer.android.com/reference/kotlin/android/net/sip/SipProfile.html#) | Defines a SIP profile, including a SIP account, domain and server information. | | [SocketAddress](https://developer.android.com/reference/kotlin/java/net/SocketAddress.html#) | This class represents a Socket Address with no protocol attachment. | | [SocketPermission](https://developer.android.com/reference/kotlin/java/net/SocketPermission.html#) | Legacy security code; do not use. | | [StackTraceElement](https://developer.android.com/reference/kotlin/java/lang/StackTraceElement.html#) | An element in a stack trace, as returned by `https://developer.android.com/reference/kotlin/java/lang/Throwable.html#getStackTrace()`. | | [StampedLock](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/StampedLock.html#) | A capability-based lock with three modes for controlling read/write access. | | [String](https://developer.android.com/reference/kotlin/java/lang/String.html#) | The `String` class represents character strings. | | [StringBuffer](https://developer.android.com/reference/kotlin/java/lang/StringBuffer.html#) | A thread-safe, mutable sequence of characters. | | [StringBuilder](https://developer.android.com/reference/kotlin/java/lang/StringBuilder.html#) | A mutable sequence of characters. | | [Subject](https://developer.android.com/reference/kotlin/javax/security/auth/Subject.html#) | A `Subject` represents a grouping of related information for a single entity, such as a person. | | [SynchronousQueue](https://developer.android.com/reference/kotlin/java/util/concurrent/SynchronousQueue.html#) | A [blocking queue](https://developer.android.com/reference/kotlin/java/util/concurrent/BlockingQueue.html#) in which each insert operation must wait for a corresponding remove operation by another thread, and vice versa. | | [ThaiBuddhistChronology](https://developer.android.com/reference/kotlin/java/time/chrono/ThaiBuddhistChronology.html#) | The Thai Buddhist calendar system. | | [ThaiBuddhistDate](https://developer.android.com/reference/kotlin/java/time/chrono/ThaiBuddhistDate.html#) | A date in the Thai Buddhist calendar system. | | [Throwable](https://developer.android.com/reference/kotlin/java/lang/Throwable.html#) | The `Throwable` class is the superclass of all errors and exceptions in the Java language. | | [TimeZone](https://developer.android.com/reference/kotlin/java/util/TimeZone.html#) | represents a time zone offset, and also figures out daylight savings. | | [TimeZone](https://developer.android.com/reference/kotlin/android/icu/util/TimeZone.html#) | **\[icu enhancement\]** ICU's replacement for `https://developer.android.com/reference/kotlin/java/util/TimeZone.html#`. | | [TimeZoneFormat](https://developer.android.com/reference/kotlin/android/icu/text/TimeZoneFormat.html#) | `TimeZoneFormat` supports time zone display name formatting and parsing. | | [TimeZoneNames](https://developer.android.com/reference/kotlin/android/icu/text/TimeZoneNames.html#) | `TimeZoneNames` is an abstract class representing the time zone display name data model defined by [UTS#35 Unicode Locale Data Markup Language (LDML)](http://www.unicode.org/reports/tr35/). | | [Timestamp](https://developer.android.com/reference/kotlin/java/security/Timestamp.html#) | This class encapsulates information about a signed timestamp. | | [TreeMap](https://developer.android.com/reference/kotlin/java/util/TreeMap.html#) | A Red-Black tree based `https://developer.android.com/reference/kotlin/java/util/NavigableMap.html#` implementation. | | [TreeSet](https://developer.android.com/reference/kotlin/java/util/TreeSet.html#) | A `https://developer.android.com/reference/kotlin/java/util/NavigableSet.html#` implementation based on a `https://developer.android.com/reference/kotlin/java/util/TreeMap.html#`. | | [ULocale](https://developer.android.com/reference/kotlin/android/icu/util/ULocale.html#) | **\[icu enhancement\]** ICU's replacement for `https://developer.android.com/reference/kotlin/java/util/Locale.html#`. | | [URI](https://developer.android.com/reference/kotlin/java/net/URI.html#) | Represents a Uniform Resource Identifier (URI) reference. | | [URL](https://developer.android.com/reference/kotlin/java/net/URL.html#) | Class `URL` represents a Uniform Resource Locator, a pointer to a "resource" on the World Wide Web. | | [UUID](https://developer.android.com/reference/kotlin/java/util/UUID.html#) | A class that represents an immutable universally unique identifier (UUID). | | [UnresolvedPermission](https://developer.android.com/reference/kotlin/java/security/UnresolvedPermission.html#) | Legacy security code; do not use. | | [ValueRange](https://developer.android.com/reference/kotlin/java/time/temporal/ValueRange.html#) | The range of valid values for a date-time field. | | [Vector](https://developer.android.com/reference/kotlin/java/util/Vector.html#) | The `Vector` class implements a growable array of objects. | | [WebBackForwardList](https://developer.android.com/reference/kotlin/android/webkit/WebBackForwardList.html#) | This class contains the back/forward list for a WebView. | | [WeekFields](https://developer.android.com/reference/kotlin/java/time/temporal/WeekFields.html#) | Localized definitions of the day-of-week, week-of-month and week-of-year fields. | | [X500Principal](https://developer.android.com/reference/kotlin/javax/security/auth/x500/X500Principal.html#) | This class represents an X. | | [Year](https://developer.android.com/reference/kotlin/java/time/Year.html#) | A year in the ISO-8601 calendar system, such as `2007`. | | [YearMonth](https://developer.android.com/reference/kotlin/java/time/YearMonth.html#) | A year-month in the ISO-8601 calendar system, such as `2007-12`. | | [ZoneId](https://developer.android.com/reference/kotlin/java/time/ZoneId.html#) | A time-zone ID, such as `Europe/Paris` | | [ZoneOffset](https://developer.android.com/reference/kotlin/java/time/ZoneOffset.html#) | A time-zone offset from Greenwich/UTC, such as `+02:00`. | | [ZoneOffsetTransition](https://developer.android.com/reference/kotlin/java/time/zone/ZoneOffsetTransition.html#) | A transition between two offsets caused by a discontinuity in the local time-line. | | [ZoneOffsetTransitionRule](https://developer.android.com/reference/kotlin/java/time/zone/ZoneOffsetTransitionRule.html#) | A rule expressing how to create a transition. | | [ZoneRules](https://developer.android.com/reference/kotlin/java/time/zone/ZoneRules.html#) | The rules defining how the zone offset varies for a single time-zone. | | [ZonedDateTime](https://developer.android.com/reference/kotlin/java/time/ZonedDateTime.html#) | A date-time with a time-zone in the ISO-8601 calendar system, such as `2007-12-03T10:15:30+01:00 Europe/Paris`. | |

|---|
| Known Indirect Subclasses [AbstractQueuedLongSynchronizer](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.html#), [AbstractQueuedSynchronizer](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedSynchronizer.html#), [AllPermission](https://developer.android.com/reference/kotlin/java/security/AllPermission.html#), [AuthPermission](https://developer.android.com/reference/kotlin/javax/security/auth/AuthPermission.html#), [AuthPermission](https://developer.android.com/reference/kotlin/javax/security/auth/AuthPermission.html#), [AuthProvider](https://developer.android.com/reference/kotlin/java/security/AuthProvider.html#), [BasicPermission](https://developer.android.com/reference/kotlin/java/security/BasicPermission.html#), [BuddhistCalendar](https://developer.android.com/reference/kotlin/android/icu/util/BuddhistCalendar.html#), [CertPathValidatorException.BasicReason](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.BasicReason.html#), [CertPathValidatorException.BasicReason.ALGORITHM_CONSTRAINED](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.BasicReason.html#ENUM_VALUE:ALGORITHM_CONSTRAINED), [CertPathValidatorException.BasicReason.EXPIRED](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.BasicReason.html#ENUM_VALUE:EXPIRED), [CertPathValidatorException.BasicReason.INVALID_SIGNATURE](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.BasicReason.html#ENUM_VALUE:INVALID_SIGNATURE), and 126 others. |---|---| | [AbstractQueuedLongSynchronizer](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.html#) | A version of `https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedSynchronizer.html#` in which synchronization state is maintained as a `long`. | | [AbstractQueuedSynchronizer](https://developer.android.com/reference/kotlin/java/util/concurrent/locks/AbstractQueuedSynchronizer.html#) | Provides a framework for implementing blocking locks and related synchronizers (semaphores, events, etc) that rely on first-in-first-out (FIFO) wait queues. | | [AllPermission](https://developer.android.com/reference/kotlin/java/security/AllPermission.html#) | Android doesn't support `https://developer.android.com/reference/kotlin/java/lang/SecurityManager.html#`. | | [AuthPermission](https://developer.android.com/reference/kotlin/javax/security/auth/AuthPermission.html#) | Legacy security code; do not use. | | [AuthPermission](https://developer.android.com/reference/kotlin/javax/security/auth/AuthPermission.html#) | Legacy security code; do not use. | | [AuthProvider](https://developer.android.com/reference/kotlin/java/security/AuthProvider.html#) | Legacy security code; do not use. | | [BasicPermission](https://developer.android.com/reference/kotlin/java/security/BasicPermission.html#) | Android doesn't support `https://developer.android.com/reference/kotlin/java/lang/SecurityManager.html#`. | | [BuddhistCalendar](https://developer.android.com/reference/kotlin/android/icu/util/BuddhistCalendar.html#) | `BuddhistCalendar` is a subclass of `GregorianCalendar` that numbers years since the birth of the Buddha. | | [CertPathValidatorException.BasicReason](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.BasicReason.html#) | The BasicReason enumerates the potential reasons that a certification path of any type may be invalid. | | [CertPathValidatorException.BasicReason.ALGORITHM_CONSTRAINED](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.BasicReason.html#ENUM_VALUE:ALGORITHM_CONSTRAINED) | The public key or the signature algorithm has been constrained. | | [CertPathValidatorException.BasicReason.EXPIRED](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.BasicReason.html#ENUM_VALUE:EXPIRED) | The certificate is expired. | | [CertPathValidatorException.BasicReason.INVALID_SIGNATURE](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.BasicReason.html#ENUM_VALUE:INVALID_SIGNATURE) | The signature is invalid. | | [CertPathValidatorException.BasicReason.NOT_YET_VALID](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.BasicReason.html#ENUM_VALUE:NOT_YET_VALID) | The certificate is not yet valid. | | [CertPathValidatorException.BasicReason.REVOKED](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.BasicReason.html#ENUM_VALUE:REVOKED) | The certificate is revoked. | | [CertPathValidatorException.BasicReason.UNDETERMINED_REVOCATION_STATUS](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.BasicReason.html#ENUM_VALUE:UNDETERMINED_REVOCATION_STATUS) | The revocation status of the certificate could not be determined. | | [CertPathValidatorException.BasicReason.UNSPECIFIED](https://developer.android.com/reference/kotlin/java/security/cert/CertPathValidatorException.BasicReason.html#ENUM_VALUE:UNSPECIFIED) | Unspecified reason. | | [ChineseCalendar](https://developer.android.com/reference/kotlin/android/icu/util/ChineseCalendar.html#) | `ChineseCalendar` is a concrete subclass of `https://developer.android.com/reference/kotlin/android/icu/util/Calendar.html#` that implements a traditional Chinese calendar. | | [ChoiceFormat](https://developer.android.com/reference/kotlin/java/text/ChoiceFormat.html#) | A `ChoiceFormat` allows you to attach a format to a range of numbers. | | [CompactDecimalFormat](https://developer.android.com/reference/kotlin/android/icu/text/CompactDecimalFormat.html#) | Formats numbers in compact (abbreviated) notation, like "1. | | [ConnectionEvent](https://developer.android.com/reference/kotlin/javax/sql/ConnectionEvent.html#) | An `Event` object that provides information about the source of a connection-related event. | | [CopticCalendar](https://developer.android.com/reference/kotlin/android/icu/util/CopticCalendar.html#) | Implement the Coptic calendar system. | | [CountedCompleter](https://developer.android.com/reference/kotlin/java/util/concurrent/CountedCompleter.html#) | A `https://developer.android.com/reference/kotlin/java/util/concurrent/ForkJoinTask.html#` with a completion action performed when triggered and there are no remaining pending actions. | | [Currency](https://developer.android.com/reference/kotlin/android/icu/util/Currency.html#) | A class encapsulating a currency, as defined by ISO 4217. | | [DHPrivateKey](https://developer.android.com/reference/kotlin/javax/crypto/interfaces/DHPrivateKey.html#) | The interface to a Diffie-Hellman private key. | | [DHPublicKey](https://developer.android.com/reference/kotlin/javax/crypto/interfaces/DHPublicKey.html#) | The interface to a Diffie-Hellman public key. | | [DSAPrivateKey](https://developer.android.com/reference/kotlin/java/security/interfaces/DSAPrivateKey.html#) | The standard interface to a DSA private key. | | [DSAPublicKey](https://developer.android.com/reference/kotlin/java/security/interfaces/DSAPublicKey.html#) | The interface to a DSA public key. | | [Date](https://developer.android.com/reference/kotlin/java/sql/Date.html#) | A thin wrapper around a millisecond value that allows JDBC to identify this as an SQL `DATE` value. | | [DateFormat](https://developer.android.com/reference/kotlin/java/text/DateFormat.html#) | `DateFormat` is an abstract class for date/time formatting subclasses which formats and parses dates or time in a language-independent manner. | | [DateFormat](https://developer.android.com/reference/kotlin/android/icu/text/DateFormat.html#) | **\[icu enhancement\]** ICU's replacement for `https://developer.android.com/reference/kotlin/java/text/DateFormat.html#`. | | [DateFormat.Field](https://developer.android.com/reference/kotlin/java/text/DateFormat.Field.html#) | Defines constants that are used as attribute keys in the `AttributedCharacterIterator` returned from `DateFormat.formatToCharacterIterator` and as field identifiers in `FieldPosition`. | | [DateFormat.Field](https://developer.android.com/reference/kotlin/android/icu/text/DateFormat.Field.html#) | The instances of this inner class are used as attribute keys and values in AttributedCharacterIterator that DateFormat. | | [DateIntervalFormat](https://developer.android.com/reference/kotlin/android/icu/text/DateIntervalFormat.html#) | DateIntervalFormat is a class for formatting and parsing date intervals in a language-independent manner. | | [DecimalFormat](https://developer.android.com/reference/kotlin/java/text/DecimalFormat.html#) | is a concrete subclass of `NumberFormat` that formats decimal numbers. | | [DecimalFormat](https://developer.android.com/reference/kotlin/android/icu/text/DecimalFormat.html#) | **\[icu enhancement\]** ICU's replacement for `https://developer.android.com/reference/kotlin/java/text/DecimalFormat.html#`. | | [ECPrivateKey](https://developer.android.com/reference/kotlin/java/security/interfaces/ECPrivateKey.html#) | The interface to an elliptic curve (EC) private key. | | [ECPublicKey](https://developer.android.com/reference/kotlin/java/security/interfaces/ECPublicKey.html#) | The interface to an elliptic curve (EC) public key. | | [EdECPrivateKey](https://developer.android.com/reference/kotlin/java/security/interfaces/EdECPrivateKey.html#) | An interface for an elliptic curve private key as defined by [RFC 8032: Edwards-Curve Digital Signature Algorithm (EdDSA)](https://tools.ietf.org/html/rfc8032). | | [EdECPublicKey](https://developer.android.com/reference/kotlin/java/security/interfaces/EdECPublicKey.html#) | An interface for an elliptic curve public key as defined by [RFC 8032: Edwards-Curve Digital Signature Algorithm (EdDSA)](https://tools.ietf.org/html/rfc8032). | | [EthiopicCalendar](https://developer.android.com/reference/kotlin/android/icu/util/EthiopicCalendar.html#) | Implement the Ethiopic calendar system. | | [FilePermission](https://developer.android.com/reference/kotlin/java/io/FilePermission) | Legacy security code; do not use. | | [Format.Field](https://developer.android.com/reference/kotlin/java/text/Format.Field.html#) | Defines constants that are used as attribute keys in the `AttributedCharacterIterator` returned from `Format.formatToCharacterIterator` and as field identifiers in `FieldPosition`. | | [GregorianCalendar](https://developer.android.com/reference/kotlin/java/util/GregorianCalendar.html#) | `GregorianCalendar` is a concrete subclass of `Calendar` and provides the standard calendar system used by most of the world. | | [GregorianCalendar](https://developer.android.com/reference/kotlin/android/icu/util/GregorianCalendar.html#) | **\[icu enhancement\]** ICU's replacement for `https://developer.android.com/reference/kotlin/java/util/GregorianCalendar.html#`. | | [HandshakeCompletedEvent](https://developer.android.com/reference/kotlin/javax/net/ssl/HandshakeCompletedEvent.html#) | This event indicates that an SSL handshake completed on a given SSL connection. | | [HebrewCalendar](https://developer.android.com/reference/kotlin/android/icu/util/HebrewCalendar.html#) | `HebrewCalendar` is a subclass of `Calendar` that that implements the traditional Hebrew calendar. | | [IdentityScope](https://developer.android.com/reference/kotlin/java/security/IdentityScope.html#) | This class represents a scope for identities. | | [IndexedPropertyChangeEvent](https://developer.android.com/reference/kotlin/java/beans/IndexedPropertyChangeEvent.html#) | An "IndexedPropertyChange" event gets delivered whenever a component that conforms to the JavaBeans™ specification (a "bean") changes a bound indexed property. | | [IndianCalendar](https://developer.android.com/reference/kotlin/android/icu/util/IndianCalendar.html#) | `IndianCalendar` is a subclass of `GregorianCalendar` that numbers years since the birth of the Buddha. | | [Inet4Address](https://developer.android.com/reference/kotlin/java/net/Inet4Address.html#) | This class represents an Internet Protocol version 4 (IPv4) address. | | [Inet6Address](https://developer.android.com/reference/kotlin/java/net/Inet6Address.html#) | This class represents an Internet Protocol version 6 (IPv6) address. | | [InetSocketAddress](https://developer.android.com/reference/kotlin/java/net/InetSocketAddress.html#) | This class implements an IP Socket Address (IP address + port number) It can also be a pair (hostname + port number), in which case an attempt will be made to resolve the hostname. | | [IslamicCalendar](https://developer.android.com/reference/kotlin/android/icu/util/IslamicCalendar.html#) | `IslamicCalendar` is a subclass of `Calendar` that that implements the Islamic civil and religious calendars. | | [JapaneseCalendar](https://developer.android.com/reference/kotlin/android/icu/util/JapaneseCalendar.html#) | `JapaneseCalendar` is a subclass of `GregorianCalendar` that numbers years and eras based on the reigns of the Japanese emperors. | | [LinkPermission](https://developer.android.com/reference/kotlin/java/nio/file/LinkPermission.html#) | The `Permission` class for link creation operations. | | [LinkPermission](https://developer.android.com/reference/kotlin/java/nio/file/LinkPermission.html#) | The `Permission` class for link creation operations. | | [LinkedHashMap](https://developer.android.com/reference/kotlin/java/util/LinkedHashMap.html#) | Hash table and linked list implementation of the `Map` interface, with well-defined encounter order. | | [LinkedHashSet](https://developer.android.com/reference/kotlin/java/util/LinkedHashSet.html#) | Hash table and linked list implementation of the `Set` interface, with well-defined encounter order. | | [LoggingPermission](https://developer.android.com/reference/kotlin/java/util/logging/LoggingPermission.html#) | Legacy security code; do not use. | | [LoggingPermission](https://developer.android.com/reference/kotlin/java/util/logging/LoggingPermission.html#) | Legacy security code; do not use. | | [MeasureFormat](https://developer.android.com/reference/kotlin/android/icu/text/MeasureFormat.html#) | A formatter for Measure objects. | | [MessageFormat](https://developer.android.com/reference/kotlin/java/text/MessageFormat.html#) | provides a means to produce concatenated messages in a language-neutral way. | | [MessageFormat](https://developer.android.com/reference/kotlin/android/icu/text/MessageFormat.html#) | **\[icu enhancement\]** ICU's replacement for `https://developer.android.com/reference/kotlin/java/text/MessageFormat.html#`. | | [MessageFormat.Field](https://developer.android.com/reference/kotlin/java/text/MessageFormat.Field.html#) | Defines constants that are used as attribute keys in the `AttributedCharacterIterator` returned from `MessageFormat.formatToCharacterIterator`. | | [MessageFormat.Field](https://developer.android.com/reference/kotlin/android/icu/text/MessageFormat.Field.html#) | Defines constants that are used as attribute keys in the `AttributedCharacterIterator` returned from `MessageFormat.formatToCharacterIterator`. | | [NetPermission](https://developer.android.com/reference/kotlin/java/net/NetPermission.html#) | Legacy security code; do not use. | | [NetPermission](https://developer.android.com/reference/kotlin/java/net/NetPermission.html#) | Legacy security code; do not use. | | [NodeChangeEvent](https://developer.android.com/reference/kotlin/java/util/prefs/NodeChangeEvent.html#) | An event emitted by a Preferences node to indicate that a child of that node has been added or removed. | | [NumberFormat](https://developer.android.com/reference/kotlin/java/text/NumberFormat.html#) | `NumberFormat` is the abstract base class for all number formats. | | [NumberFormat](https://developer.android.com/reference/kotlin/android/icu/text/NumberFormat.html#) | **\[icu enhancement\]** ICU's replacement for `https://developer.android.com/reference/kotlin/java/text/NumberFormat.html#`. | | [NumberFormat.Field](https://developer.android.com/reference/kotlin/java/text/NumberFormat.Field.html#) | Defines constants that are used as attribute keys in the `AttributedCharacterIterator` returned from `NumberFormat.formatToCharacterIterator` and as field identifiers in `FieldPosition`. | | [NumberFormat.Field](https://developer.android.com/reference/kotlin/android/icu/text/NumberFormat.Field.html#) | The instances of this inner class are used as attribute keys and values in AttributedCharacterIterator that NumberFormat. | | [PBEKey](https://developer.android.com/reference/kotlin/javax/crypto/interfaces/PBEKey.html#) | The interface to a PBE key. | | [PKIXReason](https://developer.android.com/reference/kotlin/java/security/cert/PKIXReason.html#) | The `PKIXReason` enumerates the potential PKIX-specific reasons that an X. | | [PKIXReason.INVALID_KEY_USAGE](https://developer.android.com/reference/kotlin/java/security/cert/PKIXReason.html#ENUM_VALUE:INVALID_KEY_USAGE) | The certificate's key usage is invalid. | | [PKIXReason.INVALID_NAME](https://developer.android.com/reference/kotlin/java/security/cert/PKIXReason.html#ENUM_VALUE:INVALID_NAME) | The name constraints have been violated. | | [PKIXReason.INVALID_POLICY](https://developer.android.com/reference/kotlin/java/security/cert/PKIXReason.html#ENUM_VALUE:INVALID_POLICY) | The policy constraints have been violated. | | [PKIXReason.NAME_CHAINING](https://developer.android.com/reference/kotlin/java/security/cert/PKIXReason.html#ENUM_VALUE:NAME_CHAINING) | The certificate does not chain correctly. | | [PKIXReason.NOT_CA_CERT](https://developer.android.com/reference/kotlin/java/security/cert/PKIXReason.html#ENUM_VALUE:NOT_CA_CERT) | The certificate is not a CA certificate. | | [PKIXReason.NO_TRUST_ANCHOR](https://developer.android.com/reference/kotlin/java/security/cert/PKIXReason.html#ENUM_VALUE:NO_TRUST_ANCHOR) | No acceptable trust anchor found. | | [PKIXReason.PATH_TOO_LONG](https://developer.android.com/reference/kotlin/java/security/cert/PKIXReason.html#ENUM_VALUE:PATH_TOO_LONG) | The path length constraint has been violated. | | [PKIXReason.UNRECOGNIZED_CRIT_EXT](https://developer.android.com/reference/kotlin/java/security/cert/PKIXReason.html#ENUM_VALUE:UNRECOGNIZED_CRIT_EXT) | The certificate contains one or more unrecognized critical extensions. | | [Permissions](https://developer.android.com/reference/kotlin/java/security/Permissions.html#) | Android doesn't support `https://developer.android.com/reference/kotlin/java/lang/SecurityManager.html#`. | | [PluralFormat](https://developer.android.com/reference/kotlin/android/icu/text/PluralFormat.html#) | `PluralFormat` supports the creation of internationalized messages with plural inflection. | | [PreferenceChangeEvent](https://developer.android.com/reference/kotlin/java/util/prefs/PreferenceChangeEvent.html#) | An event emitted by a Preferences node to indicate that a preference has been added, removed or has had its value changed. | | [PrivateCredentialPermission](https://developer.android.com/reference/kotlin/javax/security/auth/PrivateCredentialPermission.html#) | Legacy security code; do not use. | | [PrivateKey](https://developer.android.com/reference/kotlin/java/security/PrivateKey.html#) | A private key. | | [Properties](https://developer.android.com/reference/kotlin/java/util/Properties.html#) | The `Properties` class represents a persistent set of properties. | | [PropertyChangeEvent](https://developer.android.com/reference/kotlin/java/beans/PropertyChangeEvent.html#) | A "PropertyChange" event gets delivered whenever a bean changes a "bound" or "constrained" property. | | [PropertyPermission](https://developer.android.com/reference/kotlin/java/util/PropertyPermission.html#) | Legacy security code; do not use. | | [PropertyPermission](https://developer.android.com/reference/kotlin/java/util/PropertyPermission.html#) | Legacy security code; do not use. | | [Provider](https://developer.android.com/reference/kotlin/java/security/Provider.html#) | This class represents a "provider" for the Java Security API, where a provider implements some or all parts of Java Security. | | [PublicKey](https://developer.android.com/reference/kotlin/java/security/PublicKey.html#) | A public key. | | [RSAMultiPrimePrivateCrtKey](https://developer.android.com/reference/kotlin/java/security/interfaces/RSAMultiPrimePrivateCrtKey.html#) | The interface to an RSA multi-prime private key, as defined in the [PKCS#1 v2.2](https://tools.ietf.org/rfc/rfc8017.txt) standard, using the *Chinese Remainder Theorem* (CRT) information values. | | [RSAPrivateCrtKey](https://developer.android.com/reference/kotlin/java/security/interfaces/RSAPrivateCrtKey.html#) | The interface to an RSA private key, as defined in the [PKCS#1 v2.2](https://tools.ietf.org/rfc/rfc8017.txt) standard, using the *Chinese Remainder Theorem* (CRT) information values. | | [RSAPrivateKey](https://developer.android.com/reference/kotlin/java/security/interfaces/RSAPrivateKey.html#) | The interface to an RSA private key. | | [RSAPublicKey](https://developer.android.com/reference/kotlin/java/security/interfaces/RSAPublicKey.html#) | The interface to an RSA public key. | | [RecursiveAction](https://developer.android.com/reference/kotlin/java/util/concurrent/RecursiveAction.html#) | A recursive resultless `https://developer.android.com/reference/kotlin/java/util/concurrent/ForkJoinTask.html#`. | | [RecursiveTask](https://developer.android.com/reference/kotlin/java/util/concurrent/RecursiveTask.html#) | A recursive result-bearing `https://developer.android.com/reference/kotlin/java/util/concurrent/ForkJoinTask.html#`. | | [ReflectPermission](https://developer.android.com/reference/kotlin/java/lang/reflect/ReflectPermission.html#) | Legacy security code; do not use. | | [ReflectPermission](https://developer.android.com/reference/kotlin/java/lang/reflect/ReflectPermission.html#) | Legacy security code; do not use. | | [RowSetEvent](https://developer.android.com/reference/kotlin/javax/sql/RowSetEvent.html#) | An `Event` object generated when an event occurs to a `RowSet` object. | | [RuntimePermission](https://developer.android.com/reference/kotlin/java/lang/RuntimePermission.html#) | Legacy security code; do not use. | | [RuntimePermission](https://developer.android.com/reference/kotlin/java/lang/RuntimePermission.html#) | Legacy security code; do not use. | | [SQLPermission](https://developer.android.com/reference/kotlin/java/sql/SQLPermission.html#) | Legacy security code; do not use. | | [SQLPermission](https://developer.android.com/reference/kotlin/java/sql/SQLPermission.html#) | Legacy security code; do not use. | | [SSLPermission](https://developer.android.com/reference/kotlin/javax/net/ssl/SSLPermission.html#) | Legacy security code; do not use. | | [SSLPermission](https://developer.android.com/reference/kotlin/javax/net/ssl/SSLPermission.html#) | Legacy security code; do not use. | | [SSLSessionBindingEvent](https://developer.android.com/reference/kotlin/javax/net/ssl/SSLSessionBindingEvent.html#) | This event is propagated to a SSLSessionBindingListener. | | [SecretKey](https://developer.android.com/reference/kotlin/javax/crypto/SecretKey.html#) | A secret (symmetric) key. | | [SecretKeySpec](https://developer.android.com/reference/kotlin/javax/crypto/spec/SecretKeySpec.html#) | This class specifies a secret key in a provider-independent fashion. | | [SecureRandom](https://developer.android.com/reference/kotlin/java/security/SecureRandom.html#) | This class provides a cryptographically strong random number generator (RNG). | | [SecurityPermission](https://developer.android.com/reference/kotlin/java/security/SecurityPermission.html#) | Legacy security code; do not use. | | [SecurityPermission](https://developer.android.com/reference/kotlin/java/security/SecurityPermission.html#) | Legacy security code; do not use. | | [SelectFormat](https://developer.android.com/reference/kotlin/android/icu/text/SelectFormat.html#) | `SelectFormat` supports the creation of internationalized messages by selecting phrases based on keywords. | | [SerializablePermission](https://developer.android.com/reference/kotlin/java/io/SerializablePermission) | This legacy security is not supported on Android. | | [SerializablePermission](https://developer.android.com/reference/kotlin/java/io/SerializablePermission) | This legacy security is not supported on Android. | | [Signer](https://developer.android.com/reference/kotlin/java/security/Signer.html#) | This class is used to represent an Identity that can also digitally sign data. | | [SimpleDateFormat](https://developer.android.com/reference/kotlin/java/text/SimpleDateFormat.html#) | is a concrete class for formatting and parsing dates in a locale-sensitive manner. | | [SimpleDateFormat](https://developer.android.com/reference/kotlin/android/icu/text/SimpleDateFormat.html#) | **\[icu enhancement\]** ICU's replacement for `https://developer.android.com/reference/kotlin/java/text/SimpleDateFormat.html#`. | | [SimpleTimeZone](https://developer.android.com/reference/kotlin/java/util/SimpleTimeZone.html#) | `SimpleTimeZone` is a concrete subclass of `TimeZone` that represents a time zone for use with a Gregorian calendar. | | [SocketPermission](https://developer.android.com/reference/kotlin/java/net/SocketPermission.html#) | Legacy security code; do not use. | | [Stack](https://developer.android.com/reference/kotlin/java/util/Stack.html#) | The `Stack` class represents a last-in-first-out (LIFO) stack of objects. | | [StatementEvent](https://developer.android.com/reference/kotlin/javax/sql/StatementEvent.html#) | A `StatementEvent` is sent to all `StatementEventListener`s which were registered with a `PooledConnection`. | | [TaiwanCalendar](https://developer.android.com/reference/kotlin/android/icu/util/TaiwanCalendar.html#) | `TaiwanCalendar` is a subclass of `GregorianCalendar` that numbers years since 1912. | | [TextAttribute](https://developer.android.com/reference/kotlin/java/awt/font/TextAttribute.html#) | The `TextAttribute` class defines attribute keys and attribute values used for text rendering. | | [ThreadLocalRandom](https://developer.android.com/reference/kotlin/java/util/concurrent/ThreadLocalRandom.html#) | A random number generator (with period 264) isolated to the current thread. | | [Time](https://developer.android.com/reference/kotlin/java/sql/Time.html#) | A thin wrapper around the `java.util.Date` class that allows the JDBC API to identify this as an SQL `TIME` value. | | [TimeUnit](https://developer.android.com/reference/kotlin/android/icu/util/TimeUnit.html#) | Measurement unit for time units. | | [TimeZoneFormat](https://developer.android.com/reference/kotlin/android/icu/text/TimeZoneFormat.html#) | `TimeZoneFormat` supports time zone display name formatting and parsing. | | [Timestamp](https://developer.android.com/reference/kotlin/java/sql/Timestamp.html#) | A thin wrapper around `java.util.Date` that allows the JDBC API to identify this as an SQL `TIMESTAMP` value. | | [UFormat](https://developer.android.com/reference/kotlin/android/icu/text/UFormat.html#) | An abstract class that extends `https://developer.android.com/reference/kotlin/java/text/Format.html#` to provide additional ICU protocol, specifically, the `getLocale()` API. | | [UnresolvedPermission](https://developer.android.com/reference/kotlin/java/security/UnresolvedPermission.html#) | Legacy security code; do not use. | | [VmSocketAddress](https://developer.android.com/reference/kotlin/android/system/VmSocketAddress.html#) | A virtio-vsock address `https://developer.android.com/reference/kotlin/android/system/VmSocketAddress.html#`. | | [X509Certificate](https://developer.android.com/reference/kotlin/java/security/cert/X509Certificate.html#) | Abstract class for X. | | [XECPrivateKey](https://developer.android.com/reference/kotlin/java/security/interfaces/XECPrivateKey.html#) | An interface for an elliptic curve private key as defined by RFC 7748. | | [XECPublicKey](https://developer.android.com/reference/kotlin/java/security/interfaces/XECPublicKey.html#) | An interface for an elliptic curve public key as defined by RFC 7748. | | [ZoneOffset](https://developer.android.com/reference/kotlin/java/time/ZoneOffset.html#) | A time-zone offset from Greenwich/UTC, such as `+02:00`. | |

Serializability of a class is enabled by the class implementing the java.io.Serializable interface.

**Warning: Deserialization of untrusted data is inherently dangerous and should be avoided. Untrusted data should be carefully validated.**
Classes that do not implement this interface will not have any of their state serialized or deserialized. All subtypes of a serializable class are themselves serializable. The serialization interface has no methods or fields and serves only to identify the semantics of being serializable.

To allow subtypes of non-serializable classes to be serialized, the subtype may assume responsibility for saving and restoring the state of the supertype's public, protected, and (if accessible) package fields. The subtype may assume this responsibility only if the class it extends has an accessible no-arg constructor to initialize the class's state. It is an error to declare a class Serializable if this is not the case. The error will be detected at runtime.

During deserialization, the fields of non-serializable classes will be initialized using the public or protected no-arg constructor of the class. A no-arg constructor must be accessible to the subclass that is serializable. The fields of serializable subclasses will be restored from the stream.

When traversing a graph, an object may be encountered that does not support the Serializable interface. In this case the NotSerializableException will be thrown and will identify the class of the non-serializable object.

Classes that require special handling during the serialization and deserialization process must implement special methods with these exact signatures:

```kotlin
private void writeObject(java.io.ObjectOutputStream out)
      throws IOException
  private void readObject(java.io.ObjectInputStream in)
      throws IOException, ClassNotFoundException;
  private void readObjectNoData()
      throws ObjectStreamException;
  
```

The writeObject method is responsible for writing the state of the object for its particular class so that the corresponding readObject method can restore it. The default mechanism for saving the Object's fields can be invoked by calling out.defaultWriteObject. The method does not need to concern itself with the state belonging to its superclasses or subclasses. State is saved by writing the individual fields to the ObjectOutputStream using the writeObject method or by using the methods for primitive data types supported by DataOutput.

The readObject method is responsible for reading from the stream and restoring the classes fields. It may call in.defaultReadObject to invoke the default mechanism for restoring the object's non-static and non-transient fields. The defaultReadObject method uses information in the stream to assign the fields of the object saved in the stream with the correspondingly named fields in the current object. This handles the case when the class has evolved to add new fields. The method does not need to concern itself with the state belonging to its superclasses or subclasses. State is restored by reading data from the ObjectInputStream for the individual fields and making assignments to the appropriate fields of the object. Reading primitive data types is supported by DataInput.

The readObjectNoData method is responsible for initializing the state of the object for its particular class in the event that the serialization stream does not list the given class as a superclass of the object being deserialized. This may occur in cases where the receiving party uses a different version of the deserialized instance's class than the sending party, and the receiver's version extends classes that are not extended by the sender's version. This may also occur if the serialization stream has been tampered; hence, readObjectNoData is useful for initializing deserialized objects properly despite a "hostile" or incomplete source stream.

Serializable classes that need to designate an alternative object to be used when writing an object to the stream should implement this special method with the exact signature:

```kotlin
ANY-ACCESS-MODIFIER Object writeReplace() throws ObjectStreamException;
  
```

This writeReplace method is invoked by serialization if the method exists and it would be accessible from a method defined within the class of the object being serialized. Thus, the method can have private, protected and package-private access. Subclass access to this method follows java accessibility rules.

Classes that need to designate a replacement when an instance of it is read from the stream should implement this special method with the exact signature.

```kotlin
ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException;
  
```

This readResolve method follows the same invocation rules and accessibility rules as writeReplace.

The serialization runtime associates with each serializable class a version number, called a serialVersionUID, which is used during deserialization to verify that the sender and receiver of a serialized object have loaded classes for that object that are compatible with respect to serialization. If the receiver has loaded a class for the object that has a different serialVersionUID than that of the corresponding sender's class, then deserialization will result in an `https://developer.android.com/reference/kotlin/java/io/InvalidClassException`. A serializable class can declare its own serialVersionUID explicitly by declaring a field named `"serialVersionUID"` that must be static, final, and of type `long`:

```kotlin
ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;
  
```
If a serializable class does not explicitly declare a serialVersionUID, then the serialization runtime will calculate a default serialVersionUID value for that class based on various aspects of the class, as described in the Java(TM) Object Serialization Specification. However, it is *strongly recommended* that all serializable classes explicitly declare serialVersionUID values, since the default serialVersionUID computation is highly sensitive to class details that may vary depending on compiler implementations, and can thus result in unexpected `InvalidClassException`s during deserialization. Therefore, to guarantee a consistent serialVersionUID value across different java compiler implementations, a serializable class must declare an explicit serialVersionUID value. It is also strongly advised that explicit serialVersionUID declarations use the `private` modifier where possible, since such declarations apply only to the immediately declaring class--serialVersionUID fields are not useful as inherited members. Array classes cannot declare an explicit serialVersionUID, so they always have the default computed value, but the requirement for matching serialVersionUID values is waived for array classes. Android implementation of serialVersionUID computation will change slightly for some classes if you're targeting android N. In order to preserve compatibility, this change is only enabled if the application target SDK version is set to 24 or higher. It is highly recommended to use an explicit serialVersionUID field to avoid compatibility issues.

### Implement Serializable Judiciously

Refer to *Effective Java* 's chapter on serialization for thorough coverage of the serialization API. The book explains how to use this interface without harming your application's maintainability.

### Recommended Alternatives

**JSON** is concise, human-readable and efficient. Android includes both a `https://developer.android.com/reference/kotlin/android/util/JsonReader.html#` and a `https://developer.android.com/reference/kotlin/org/json/JSONObject.html#` to read and write JSON. Use a binding library like [GSON](http://code.google.com/p/google-gson/) to read and write Java objects directly.

## Summary