app第一阶段冲刺第九天
作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/16192585.html
字符串加载器
package com.linlang.grasharepro.utils.validation; /** * 字符串加载器 */ public abstract class TextLazyLoader implements LazyLoader{ @Override public final Long loadInt() { return null; } @Override public final Double loadFloat() { return null; } }
package com.linlang.grasharepro.utils.validation; import android.widget.TextView; /** * TextView Text value Loader */ public class TextViewLoader implements LazyLoader{ private final TextView mTextView; public TextViewLoader(TextView textView) { mTextView = textView; } @Override public Long loadInt() { return null; } @Override public Double loadFloat() { return null; } @Override public String loadString() { return String.valueOf(mTextView.getText()); } }
package com.linlang.grasharepro.utils.validation; class ValuePatternMeta extends PatternMeta<ValuePattern> { final LazyLoader lazyLoader; ValueType valueType; String minValue; String maxValue; String value; ValuePatternMeta(ValuePattern pattern, String message, int messageId, LazyLoader lazyLoader, ValueType valueType, String minValue, String maxValue, String value) { super(pattern, message, messageId); this.lazyLoader = lazyLoader; this.valueType = valueType; this.minValue = minValue; this.maxValue = maxValue; this.value = value; } private void setValue(String value){ valueType = ValueType.String; syncValue(value); } private void setValue(long value){ valueType = ValueType.Int; syncValue(value); } private void setValue(double value){ valueType = ValueType.Float; syncValue(value); } private void syncValue(Object value){ this.value = String.valueOf(value); this.minValue = this.value; } void performLazyLoader(){ if (lazyLoader == null) { return; } final String stringValue = lazyLoader.loadString(); final Long longValue = lazyLoader.loadInt(); final Double floatValue = lazyLoader.loadFloat(); if (stringValue != null){ setValue(stringValue); } else if (longValue != null){ setValue(longValue); } else if (floatValue != null){ setValue(floatValue); } } String getMessage() { if (this.message == null){ return null; } String message = this.message; if (minValue != null) { message = message.replace("{0}", minValue); } if (maxValue != null) { message = message.replace("{1}", maxValue); } return message; } static ValuePatternMeta parse(ValuePattern pattern){ return new ValuePatternMeta(pattern, pattern.getMessage(), pattern.getMessageId(), pattern.getLazyLoader(), pattern.getValueType(), pattern.getMinValue(), pattern.getMaxValue(), pattern.getValue()); } @Override public String toString() { return "{" + "pattern=" + pattern.name() + ", messageId=" + messageId + ", message='" + message + '\'' + ", lazyLoader=" + lazyLoader + ", valueType=" + valueType + ", minValue='" + minValue + '\'' + ", maxValue='" + maxValue + '\'' + ", value='" + value + '\'' + '}'; } }
package com.linlang.grasharepro.utils.validation; /** * Value type */ enum ValueType{ Float, Int, String }
明天写数值匹配模式,然后相应的模式调用文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)