例子
class A {
private String id;
public A setId(String id) {
this.id = id;
}
}
class B extends A {
@JSONField(name = "notId")
@Override
public A setId(String id) {
this.id = id;
}
}
此时反序列化B类示例时,该字段是无法正确设值的
大致看了下源码,应该位于com.alibaba.fastjson.util.JavaBeanInfo类中
for (Method method : methods) { //
int ordinal = 0, serialzeFeatures = 0, parserFeatures = 0;
String methodName = method.getName();
if (Modifier.isStatic(method.getModifiers())) {
continue;
}
// support builder set
Class<?> returnType = method.getReturnType();
//此处方法返回类型应用Class.isAssignableFrom方法判断,否则子类无法覆盖字段名称
if (!(returnType.equals(Void.TYPE) || returnType.equals(method.getDeclaringClass()))) {
continue;
}
2条答案
按热度按时间lawou6xi1#
啊这,setter方法规定返回类型为void~
wn9m85ua2#
一样的问题