我有一个类MyOptional
,它包含一个泛型对象,在本例中为Foo
。我可以在日志中看到以下警告
No setter/field for present found on class MyOptional (fields/setters are case sensitive!)
No setter/field for empty found on class MyOptional (fields/setters are case sensitive!)
//The above two are static methods, and the below ones are fields in Foo
No setter/field for f1 found on class MyOptional
No setter/field for f2 found on class MyOptional
...as well as for all other fields
类看起来是这样的:
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyOptional<T> {
private static final FSOptional<?> EMPTY = new FSOptional<>(null);
private T value;
public static <T> FSOptional<T> empty() {
return (FSOptional<T>) EMPTY;
}
public static <T> FSOptional<T> of(T t) {
return new FSOptional<>(t);
}
public boolean isPresent() {
return value != null;
}
public boolean isEmpty() {
return value == null;
}
}
和
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Foo {
private String f1;
private String f2;
...
}
我可以在数据库中看到数据正在被保存,但是它确实显示了我的两个静态方法的结果/值(isEmpty()
和isPresent()
用于MyOptional
)。但是,我注意到db的基本对象是Foo而不是MyOptional...
我有默认的构造函数和setter和getter通过@NoArgsConstructor
和@Data
,对于两个对象,所以我很困惑为什么我仍然看到这个警告...任何想法为什么和如何修复它?
1条答案
按热度按时间rm5edbpk1#
我想明白了
我通过向每个方法
com.google.cloud.firestore.annotation.Exclude
添加以下注解来解决静态方法(isPresent和isEmpty)的警告。至于其他字段的嵌套的其他警告,它与上述内容没有任何关系。之前,我将
Foo
对象直接存储在数据库中,但我将其更新为MyOptional<Foo>
。我注意到,当第一次获取对象时,我看到每个字段的所有警告,但是,一旦对象更新为新类型,我就不再看到警告了。