package net.qiujuer.tips.factory.util; import com.google.gson.ExclusionStrategy; import com.google.gson.FieldAttributes; /** * Created by QiuJu * on 2014/9/16. */ public class SpecificClassExclusionStrategy implements ExclusionStrategy { private final Class<?> excludedThisClass; private final Class<?> excludedThisClassFields; /** * 过滤器初始化 * * @param excludedThisClass 该类和继承自该类的对象实例将被忽略 * @param excludedThisClassFields 该类的属性将不被序列化 */ public SpecificClassExclusionStrategy(Class<?> excludedThisClass, Class<?> excludedThisClassFields) { this.excludedThisClass = excludedThisClass; this.excludedThisClassFields = excludedThisClassFields; } @Override public boolean shouldSkipClass(Class<?> clazz) { return clazz != null && (clazz.equals(excludedThisClass) || shouldSkipClass(clazz.getSuperclass())); } @Override public boolean shouldSkipField(FieldAttributes f) { return f.getDeclaringClass().equals(excludedThisClassFields); } }