diff --git a/flyfish-bean/src/main/java/dev/flyfish/framework/beans/meta/parser/chain/impl/EmptyAnnotationChain.java b/flyfish-bean/src/main/java/dev/flyfish/framework/beans/meta/parser/chain/impl/EmptyAnnotationChain.java
index 211f8cf..26606ce 100644
--- a/flyfish-bean/src/main/java/dev/flyfish/framework/beans/meta/parser/chain/impl/EmptyAnnotationChain.java
+++ b/flyfish-bean/src/main/java/dev/flyfish/framework/beans/meta/parser/chain/impl/EmptyAnnotationChain.java
@@ -65,7 +65,7 @@ public class EmptyAnnotationChain extends BasicAnnotati
*/
@Override
public BeanPropertyAnnotationChain then(Consumer consumer) {
- parent.last(false);
+ markParent();
return this;
}
@@ -77,7 +77,7 @@ public class EmptyAnnotationChain extends BasicAnnotati
*/
@Override
public BeanPropertyAnnotationChain exists(Runnable handler) {
- parent.last(false);
+ markParent();
return this;
}
@@ -135,4 +135,15 @@ public class EmptyAnnotationChain extends BasicAnnotati
protected BeanPropertyAnnotations cache() {
return parent;
}
+
+ /**
+ * 需要判定之前的值。当我们进入空链,且调用了then,
+ * 代表在没值的时候下次尝试用or时仍可获取值(and总是成立)
+ */
+ private void markParent() {
+ // 当且仅当链上没有值,才尝试置为false,供后续使用
+ if (null == parent.value()) {
+ parent.last(false);
+ }
+ }
}