⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaulttypeadapters.java

📁 地图生成的一个文件
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * Copyright (C) 2008 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.google.gson;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.math.BigDecimal;import java.math.BigInteger;import java.net.MalformedURLException;import java.net.URI;import java.net.URISyntaxException;import java.net.URL;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Collection;import java.util.Date;import java.util.GregorianCalendar;import java.util.HashSet;import java.util.LinkedHashMap;import java.util.LinkedList;import java.util.List;import java.util.Locale;import java.util.Map;import java.util.Properties;import java.util.Queue;import java.util.Set;import java.util.SortedSet;import java.util.StringTokenizer;import java.util.TreeSet;import java.util.UUID;/** * List of all the default type adapters ({@link JsonSerializer}s, {@link JsonDeserializer}s, * and {@link InstanceCreator}s. * * @author Inderjeet Singh * @author Joel Leitch */final class DefaultTypeAdapters {  private static final DefaultDateTypeAdapter DATE_TYPE_ADAPTER =      new DefaultDateTypeAdapter(DateFormat.getDateTimeInstance());  @SuppressWarnings("unchecked")  private static final EnumTypeAdapter ENUM_TYPE_ADAPTER = new EnumTypeAdapter();  private static final UrlTypeAdapter URL_TYPE_ADAPTER = new UrlTypeAdapter();  private static final UriTypeAdapter URI_TYPE_ADAPTER = new UriTypeAdapter();  private static final UuidTypeAdapter UUUID_TYPE_ADAPTER = new UuidTypeAdapter();  private static final LocaleTypeAdapter LOCALE_TYPE_ADAPTER = new LocaleTypeAdapter();  private static final CollectionTypeAdapter COLLECTION_TYPE_ADAPTER = new CollectionTypeAdapter();  private static final MapTypeAdapter MAP_TYPE_ADAPTER = new MapTypeAdapter();  private static final BigDecimalTypeAdapter BIG_DECIMAL_TYPE_ADAPTER = new BigDecimalTypeAdapter();  private static final BigIntegerTypeAdapter BIG_INTEGER_TYPE_ADAPTER = new BigIntegerTypeAdapter();  private static final BooleanTypeAdapter BOOLEAN_TYPE_ADAPTER = new BooleanTypeAdapter();  private static final ByteTypeAdapter BYTE_TYPE_ADAPTER = new ByteTypeAdapter();  private static final CharacterTypeAdapter CHARACTER_TYPE_ADAPTER = new CharacterTypeAdapter();  private static final DoubleDeserializer DOUBLE_TYPE_ADAPTER = new DoubleDeserializer();  private static final FloatDeserializer FLOAT_TYPE_ADAPTER = new FloatDeserializer();  private static final IntegerTypeAdapter INTEGER_TYPE_ADAPTER = new IntegerTypeAdapter();  private static final LongDeserializer LONG_DESERIALIZER = new LongDeserializer();  private static final NumberTypeAdapter NUMBER_TYPE_ADAPTER = new NumberTypeAdapter();  private static final ShortTypeAdapter SHORT_TYPE_ADAPTER = new ShortTypeAdapter();  private static final StringTypeAdapter STRING_TYPE_ADAPTER = new StringTypeAdapter();  private static final PropertiesCreator PROPERTIES_CREATOR = new PropertiesCreator();  private static final TreeSetCreator TREE_SET_CREATOR = new TreeSetCreator();  private static final HashSetCreator HASH_SET_CREATOR = new HashSetCreator();  private static final GregorianCalendarTypeAdapter GREGORIAN_CALENDAR_TYPE_ADAPTER =     new GregorianCalendarTypeAdapter();  // The constants DEFAULT_SERIALIZERS, DEFAULT_DESERIALIZERS, and DEFAULT_INSTANCE_CREATORS  // must be defined after the constants for the type adapters. Otherwise, the type adapter  // constants will appear as nulls.  private static final ParameterizedTypeHandlerMap<JsonSerializer<?>> DEFAULT_SERIALIZERS =      createDefaultSerializers();  private static final ParameterizedTypeHandlerMap<JsonDeserializer<?>> DEFAULT_DESERIALIZERS =      createDefaultDeserializers();  private static final ParameterizedTypeHandlerMap<InstanceCreator<?>> DEFAULT_INSTANCE_CREATORS =      createDefaultInstanceCreators();  private static ParameterizedTypeHandlerMap<JsonSerializer<?>> createDefaultSerializers() {    ParameterizedTypeHandlerMap<JsonSerializer<?>> map =        new ParameterizedTypeHandlerMap<JsonSerializer<?>>();    map.register(Enum.class, ENUM_TYPE_ADAPTER);    map.register(URL.class, URL_TYPE_ADAPTER);    map.register(URI.class, URI_TYPE_ADAPTER);    map.register(UUID.class, UUUID_TYPE_ADAPTER);    map.register(Locale.class, LOCALE_TYPE_ADAPTER);    map.register(Collection.class, COLLECTION_TYPE_ADAPTER);    map.register(Map.class, MAP_TYPE_ADAPTER);    map.register(Date.class, DATE_TYPE_ADAPTER);    map.register(Calendar.class, GREGORIAN_CALENDAR_TYPE_ADAPTER);    map.register(GregorianCalendar.class, GREGORIAN_CALENDAR_TYPE_ADAPTER);    map.register(BigDecimal.class, BIG_DECIMAL_TYPE_ADAPTER);    map.register(BigInteger.class, BIG_INTEGER_TYPE_ADAPTER);        // Add primitive serializers    map.register(Boolean.class, BOOLEAN_TYPE_ADAPTER);    map.register(boolean.class, BOOLEAN_TYPE_ADAPTER);    map.register(Byte.class, BYTE_TYPE_ADAPTER);    map.register(byte.class, BYTE_TYPE_ADAPTER);    map.register(Character.class, CHARACTER_TYPE_ADAPTER);    map.register(char.class, CHARACTER_TYPE_ADAPTER);    map.register(Integer.class, INTEGER_TYPE_ADAPTER);    map.register(int.class, INTEGER_TYPE_ADAPTER);    map.register(Number.class, NUMBER_TYPE_ADAPTER);    map.register(Short.class, SHORT_TYPE_ADAPTER);    map.register(short.class, SHORT_TYPE_ADAPTER);    map.register(String.class, STRING_TYPE_ADAPTER);    map.makeUnmodifiable();    return map;  }  private static ParameterizedTypeHandlerMap<JsonDeserializer<?>> createDefaultDeserializers() {    ParameterizedTypeHandlerMap<JsonDeserializer<?>> map =        new ParameterizedTypeHandlerMap<JsonDeserializer<?>>();    map.register(Enum.class, wrapDeserializer(ENUM_TYPE_ADAPTER));    map.register(URL.class, wrapDeserializer(URL_TYPE_ADAPTER));    map.register(URI.class, wrapDeserializer(URI_TYPE_ADAPTER));    map.register(UUID.class, wrapDeserializer(UUUID_TYPE_ADAPTER));    map.register(Locale.class, wrapDeserializer(LOCALE_TYPE_ADAPTER));    map.register(Collection.class, wrapDeserializer(COLLECTION_TYPE_ADAPTER));    map.register(Map.class, wrapDeserializer(MAP_TYPE_ADAPTER));    map.register(Date.class, wrapDeserializer(DATE_TYPE_ADAPTER));    map.register(Calendar.class, GREGORIAN_CALENDAR_TYPE_ADAPTER);    map.register(GregorianCalendar.class, GREGORIAN_CALENDAR_TYPE_ADAPTER);    map.register(BigDecimal.class, wrapDeserializer(BIG_DECIMAL_TYPE_ADAPTER));    map.register(BigInteger.class, wrapDeserializer(BIG_INTEGER_TYPE_ADAPTER));        // Add primitive deserializers    map.register(Boolean.class, wrapDeserializer(BOOLEAN_TYPE_ADAPTER));    map.register(boolean.class, wrapDeserializer(BOOLEAN_TYPE_ADAPTER));    map.register(Byte.class, wrapDeserializer(BYTE_TYPE_ADAPTER));    map.register(byte.class, wrapDeserializer(BYTE_TYPE_ADAPTER));    map.register(Character.class, wrapDeserializer(CHARACTER_TYPE_ADAPTER));    map.register(char.class, wrapDeserializer(CHARACTER_TYPE_ADAPTER));    map.register(Double.class, wrapDeserializer(DOUBLE_TYPE_ADAPTER));    map.register(double.class, wrapDeserializer(DOUBLE_TYPE_ADAPTER));    map.register(Float.class, wrapDeserializer(FLOAT_TYPE_ADAPTER));    map.register(float.class, wrapDeserializer(FLOAT_TYPE_ADAPTER));    map.register(Integer.class, wrapDeserializer(INTEGER_TYPE_ADAPTER));    map.register(int.class, wrapDeserializer(INTEGER_TYPE_ADAPTER));    map.register(Long.class, wrapDeserializer(LONG_DESERIALIZER));    map.register(long.class, wrapDeserializer(LONG_DESERIALIZER));    map.register(Number.class, wrapDeserializer(NUMBER_TYPE_ADAPTER));    map.register(Short.class, wrapDeserializer(SHORT_TYPE_ADAPTER));    map.register(short.class, wrapDeserializer(SHORT_TYPE_ADAPTER));    map.register(String.class, wrapDeserializer(STRING_TYPE_ADAPTER));    map.makeUnmodifiable();    return map;  }  private static ParameterizedTypeHandlerMap<InstanceCreator<?>> createDefaultInstanceCreators() {    ParameterizedTypeHandlerMap<InstanceCreator<?>> map =        new ParameterizedTypeHandlerMap<InstanceCreator<?>>();    map.register(Map.class, MAP_TYPE_ADAPTER);    // Add Collection type instance creators    map.register(Collection.class, COLLECTION_TYPE_ADAPTER);    map.register(List.class, COLLECTION_TYPE_ADAPTER);    map.register(Queue.class, COLLECTION_TYPE_ADAPTER);    map.register(Set.class, HASH_SET_CREATOR);    map.register(SortedSet.class, TREE_SET_CREATOR);    map.register(Properties.class, PROPERTIES_CREATOR);    map.makeUnmodifiable();    return map;  }  @SuppressWarnings("unchecked")  private static JsonDeserializer<?> wrapDeserializer(JsonDeserializer<?> deserializer) {    return new JsonDeserializerExceptionWrapper(deserializer);  }  static ParameterizedTypeHandlerMap<JsonSerializer<?>> getDefaultSerializers() {    return getDefaultSerializers(false, LongSerializationPolicy.DEFAULT);  }        static ParameterizedTypeHandlerMap<JsonSerializer<?>> getDefaultSerializers(      boolean serializeSpecialFloatingPointValues, LongSerializationPolicy longSerializationPolicy) {    ParameterizedTypeHandlerMap<JsonSerializer<?>> serializers =        new ParameterizedTypeHandlerMap<JsonSerializer<?>>();        // Double primitive    DefaultTypeAdapters.DoubleSerializer doubleSerializer =         new DefaultTypeAdapters.DoubleSerializer(serializeSpecialFloatingPointValues);    serializers.registerIfAbsent(Double.class, doubleSerializer);    serializers.registerIfAbsent(double.class, doubleSerializer);    // Float primitive    DefaultTypeAdapters.FloatSerializer floatSerializer =         new DefaultTypeAdapters.FloatSerializer(serializeSpecialFloatingPointValues);    serializers.registerIfAbsent(Float.class, floatSerializer);    serializers.registerIfAbsent(float.class, floatSerializer);    // Long primitive    DefaultTypeAdapters.LongSerializer longSerializer =         new DefaultTypeAdapters.LongSerializer(longSerializationPolicy);    serializers.registerIfAbsent(Long.class, longSerializer);    serializers.registerIfAbsent(long.class, longSerializer);    serializers.registerIfAbsent(DEFAULT_SERIALIZERS);    return serializers;  }    static ParameterizedTypeHandlerMap<JsonDeserializer<?>> getDefaultDeserializers() {    return DEFAULT_DESERIALIZERS;  }    static ParameterizedTypeHandlerMap<InstanceCreator<?>> getDefaultInstanceCreators() {    return DEFAULT_INSTANCE_CREATORS;  }  static class DefaultDateTypeAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> {    private final DateFormat format;    public DefaultDateTypeAdapter(String datePattern) {      this.format = new SimpleDateFormat(datePattern);    }        DefaultDateTypeAdapter(DateFormat format) {      this.format = format;    }    public DefaultDateTypeAdapter(int style) {      this.format = DateFormat.getDateInstance(style);    }    public DefaultDateTypeAdapter(int dateStyle, int timeStyle) {      this.format = DateFormat.getDateTimeInstance(dateStyle, timeStyle);    }    public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {      String dateFormatAsString = format.format(src);      return new JsonPrimitive(dateFormatAsString);    }    public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)        throws JsonParseException {      if (!(json instanceof JsonPrimitive)) {        throw new JsonParseException("The date should be a string value");      }      try {        return format.parse(json.getAsString());      } catch (ParseException e) {        throw new JsonParseException(e);      }    }    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -