@Beta @GwtIncompatible 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)