public final class ArbitraryInstances
extends java.lang.Object
Covers arrays, enums and common types defined in java.lang, java.lang.reflect,
java.io, java.nio, java.math, java.util, java.util.concurrent, java.util.regex, com.google.common.base, com.google.common.collect and com.google.common.primitives. In addition, if the type
exposes at least one public static final constant of the same type, one of the constants will be
used; or if the class exposes a public parameter-less constructor then it will be "new"d and
returned.
All default instances returned by get(java.lang.Class<T>) are generics-safe. Clients won't get type
errors for using get(Comparator.class) as a Comparator<Foo>, for example.
Immutable empty instances are returned for collection types; "" for string; 0 for
number types; reasonable default instance for other stateless types. For mutable types, a fresh
instance is created each time get() is called.
| Modifier and Type | Class and Description |
|---|---|
private static class |
ArbitraryInstances.AlwaysEqual |
private static class |
ArbitraryInstances.ByToString |
private static class |
ArbitraryInstances.Dummies |
private static class |
ArbitraryInstances.NullByteSink |
| Modifier and Type | Field and Description |
|---|---|
private static Ordering<java.lang.reflect.Field> |
BY_FIELD_NAME |
private static ClassToInstanceMap<java.lang.Object> |
DEFAULTS |
private static java.util.concurrent.ConcurrentMap<java.lang.Class<?>,java.lang.Class<?>> |
implementations
type → implementation.
|
private static java.util.logging.Logger |
logger |
| Modifier | Constructor and Description |
|---|---|
private |
ArbitraryInstances() |
| Modifier and Type | Method and Description |
|---|---|
private static <T> T |
arbitraryConstantInstanceOrNull(java.lang.Class<T> type) |
private static <T> T |
createEmptyArray(java.lang.Class<T> arrayType) |
static <T> T |
get(java.lang.Class<T> type)
Returns an arbitrary instance for
type, or null if no arbitrary instance can be
determined. |
private static <T> java.lang.Class<? extends T> |
getImplementation(java.lang.Class<T> type) |
private static java.util.regex.MatchResult |
newMatchResult()
Returns a new
MatchResult that corresponds to a successful match. |
private static <T> void |
setImplementation(java.lang.Class<T> type,
java.lang.Class<? extends T> implementation) |
private static final Ordering<java.lang.reflect.Field> BY_FIELD_NAME
private static final ClassToInstanceMap<java.lang.Object> DEFAULTS
private static final java.util.concurrent.ConcurrentMap<java.lang.Class<?>,java.lang.Class<?>> implementations
private static final java.util.logging.Logger logger
private static java.util.regex.MatchResult newMatchResult()
MatchResult that corresponds to a successful match. Apache Harmony (used
in Android) requires a successful match in order to generate a MatchResult:
http://goo.gl/5VQFmCprivate static <T> void setImplementation(java.lang.Class<T> type,
java.lang.Class<? extends T> implementation)
private static <T> java.lang.Class<? extends T> getImplementation(java.lang.Class<T> type)
public static <T> T get(java.lang.Class<T> type)
type, or null if no arbitrary instance can be
determined.private static <T> T arbitraryConstantInstanceOrNull(java.lang.Class<T> type)
private static <T> T createEmptyArray(java.lang.Class<T> arrayType)