fieldaliasingmapper.java

来自「xstream是一个把java object序列化成xml文件的开源库,轻便好用」· Java 代码 · 共 58 行

JAVA
58
字号
package com.thoughtworks.xstream.mapper;import com.thoughtworks.xstream.alias.ClassMapper;import java.util.*;/** * Mapper that allows a field of a specific class to be replaced with a shorter alias, or omitted * entirely. * * @author Joe Walnes */public class FieldAliasingMapper extends MapperWrapper {    protected final Map fieldToAliasMap = Collections.synchronizedMap(new HashMap());    protected final Map aliasToFieldMap = Collections.synchronizedMap(new HashMap());    protected final Set fieldsToOmit = Collections.synchronizedSet(new HashSet());    public FieldAliasingMapper(ClassMapper wrapped) {        super(wrapped);    }    public void addFieldAlias(String alias, Class type, String fieldName) {        fieldToAliasMap.put(key(type, fieldName), alias);        aliasToFieldMap.put(key(type, alias), fieldName);    }    private Object key(Class type, String value) {        return type.getName() + '.' + value;    }    public String serializedMember(Class type, String memberName) {        String alias = (String) fieldToAliasMap.get(key(type, memberName));        if (alias == null) {            return super.serializedMember(type, memberName);        } else {            return alias;        }    }    public String realMember(Class type, String serialized) {        String real = (String) aliasToFieldMap.get(key(type, serialized));        if (real == null) {            return super.realMember(type, serialized);        } else {            return real;        }    }    public boolean shouldSerializeMember(Class definedIn, String fieldName) {        return !fieldsToOmit.contains(key(definedIn, fieldName));    }    public void omitField(Class type, String fieldName) {        fieldsToOmit.add(key(type, fieldName));    }}

⌨️ 快捷键说明

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