aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/eu/mulk/jgvariant/core/Variant.java
blob: e2b4b68ef625c1e119cd1f376b58c4bb4789964a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package eu.mulk.jgvariant.core;

/**
 * A dynamically typed GVariant value carrying a {@link Signature} describing its type.
 *
 * <p>{@link #value()} can be of one of the following types:
 *
 * <ul>
 *   <li>{@link Boolean}
 *   <li>{@link Byte}
 *   <li>{@link Short}
 *   <li>{@link Integer}
 *   <li>{@link Long}
 *   <li>{@link String}
 *   <li>{@link java.util.Optional} (a GVariant {@code Maybe} type)
 *   <li>{@link java.util.List} (a GVariant array)
 *   <li>{@link Object[]} (a GVariant structure)
 * </ul>
 *
 * @param signature the signature describing the type of the value.
 * @param value the value itself; one of {@link Boolean}, {@link Byte}, {@link Short}, {@link
 *     Integer}, {@link Long}, {@link String}, {@link java.util.Optional}, {@link java.util.List},
 *     {@link Object[]}.
 */
public record Variant(Signature signature, Object value) {}