change parser

This commit is contained in:
Looly
2022-03-27 12:14:55 +08:00
parent b8569a9837
commit bbcf5f1b54
23 changed files with 512 additions and 437 deletions

View File

@@ -251,7 +251,7 @@ public class PropDesc {
* @param value 属性值,可以为任意类型
* @param ignoreNull 是否忽略{@code null}值true表示忽略
* @param ignoreError 是否忽略错误,包括转换错误和注入错误
* @param override 是否覆盖目标值如果不覆盖会先读取bean的值{@code null}则写,否则忽略。如果覆盖,则不判断直接写
* @param override 是否覆盖目标值如果不覆盖会先读取bean的值{@code null}则写,否则忽略。如果覆盖,则不判断直接写
* @return this
* @since 5.7.17
*/

View File

@@ -1,5 +1,7 @@
package cn.hutool.core.date;
import cn.hutool.core.util.ArrayUtil;
import java.time.DayOfWeek;
import java.util.Calendar;
@@ -48,6 +50,12 @@ public enum Week {
SATURDAY(Calendar.SATURDAY);
// ---------------------------------------------------------------
/**
* Weeks aliases.
*/
private static final String[] ALIASES = {"sun", "mon", "tue", "wed", "thu", "fri", "sat"};
private static final Week[] ENUMS = Week.values();
/**
* 星期对应{@link Calendar} 中的Week值
*/
@@ -71,6 +79,20 @@ public enum Week {
return this.value;
}
/**
* 获取ISO8601规范的int值from 1 (Monday) to 7 (Sunday).
*
* @return ISO8601规范的int值
* @since 5.8.0
*/
public int getIso8601Value(){
int iso8601IntValue = getValue() -1;
if(0 == iso8601IntValue){
iso8601IntValue = 7;
}
return iso8601IntValue;
}
/**
* 转换为中文名
*
@@ -109,6 +131,16 @@ public enum Week {
}
}
/**
* 转换为{@link DayOfWeek}
*
* @return {@link DayOfWeek}
* @since 5.8.0
*/
public DayOfWeek toJdkDayOfWeek() {
return DayOfWeek.of(getIso8601Value());
}
/**
* 将 {@link Calendar}星期相关值转换为Week枚举对象<br>
*
@@ -123,24 +155,26 @@ public enum Week {
* @see #SATURDAY
*/
public static Week of(int calendarWeekIntValue) {
switch (calendarWeekIntValue) {
case Calendar.SUNDAY:
return SUNDAY;
case Calendar.MONDAY:
return MONDAY;
case Calendar.TUESDAY:
return TUESDAY;
case Calendar.WEDNESDAY:
return WEDNESDAY;
case Calendar.THURSDAY:
return THURSDAY;
case Calendar.FRIDAY:
return FRIDAY;
case Calendar.SATURDAY:
return SATURDAY;
default:
return null;
if (calendarWeekIntValue >= ENUMS.length || calendarWeekIntValue < 0) {
return null;
}
return ENUMS[calendarWeekIntValue];
}
/**
* 解析别名为Week对象别名如sun或者SUNDAY不区分大小写
*
* @param name 别名值
* @return 周int值
* @throws IllegalArgumentException 如果别名无对应的枚举,抛出此异常
* @since 5.8.0
*/
public static Week of(String name) throws IllegalArgumentException {
Week of = of(ArrayUtil.indexOfIgnoreCase(ALIASES, name));
if (null == of) {
of = Week.valueOf(name.toUpperCase());
}
return of;
}
/**

View File

@@ -188,7 +188,7 @@ public class Range<T> implements Iterable<T>, Iterator<T>, Serializable {
}
/**
* 重置{@link Range}
* 重置Range
*
* @return this
*/

View File

@@ -3,7 +3,7 @@ package cn.hutool.core.lang.mutable;
import cn.hutool.core.util.NumberUtil;
/**
* 可变 <code>long</code> 类型
* 可变 {@code long} 类型
*
* @see Long
* @since 3.0.1
@@ -21,6 +21,7 @@ public class MutableLong extends Number implements Comparable<MutableLong>, Muta
/**
* 构造
*
* @param value 值
*/
public MutableLong(final long value) {
@@ -29,6 +30,7 @@ public class MutableLong extends Number implements Comparable<MutableLong>, Muta
/**
* 构造
*
* @param value 值
*/
public MutableLong(final Number value) {
@@ -37,6 +39,7 @@ public class MutableLong extends Number implements Comparable<MutableLong>, Muta
/**
* 构造
*
* @param value String值
* @throws NumberFormatException 数字转换错误
*/
@@ -51,6 +54,7 @@ public class MutableLong extends Number implements Comparable<MutableLong>, Muta
/**
* 设置值
*
* @param value 值
*/
public void set(final long value) {
@@ -63,8 +67,10 @@ public class MutableLong extends Number implements Comparable<MutableLong>, Muta
}
// -----------------------------------------------------------------------
/**
* 值+1
*
* @return this
*/
public MutableLong increment() {
@@ -74,6 +80,7 @@ public class MutableLong extends Number implements Comparable<MutableLong>, Muta
/**
* 值减一
*
* @return this
*/
public MutableLong decrement() {
@@ -82,8 +89,10 @@ public class MutableLong extends Number implements Comparable<MutableLong>, Muta
}
// -----------------------------------------------------------------------
/**
* 增加值
*
* @param operand 被增加的值
* @return this
*/
@@ -94,6 +103,7 @@ public class MutableLong extends Number implements Comparable<MutableLong>, Muta
/**
* 增加值
*
* @param operand 被增加的值,非空
* @return this
* @throws NullPointerException if the object is null
@@ -148,16 +158,17 @@ public class MutableLong extends Number implements Comparable<MutableLong>, Muta
}
// -----------------------------------------------------------------------
/**
* 相等需同时满足如下条件:
* <ol>
* <li>非空</li>
* <li>类型为 {@link MutableLong}</li>
* <li>类型为 MutableLong</li>
* <li>值相等</li>
* </ol>
*
* @param obj 比对的对象
* @return 相同返回<code>true</code>,否则 <code>false</code>
* @return 相同返回<code>true</code>,否则 {@code false}
*/
@Override
public boolean equals(final Object obj) {
@@ -173,10 +184,11 @@ public class MutableLong extends Number implements Comparable<MutableLong>, Muta
}
// -----------------------------------------------------------------------
/**
* 比较
*
* @param other 其它 {@link MutableLong} 对象
* @param other 其它 MutableLong 对象
* @return x==y返回0x&lt;y返回-1x&gt;y返回1
*/
@Override

View File

@@ -1,5 +1,10 @@
package cn.hutool.core.util;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.func.Func1;
import cn.hutool.core.lang.func.LambdaUtil;
import cn.hutool.core.map.MapUtil;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
@@ -9,11 +14,6 @@ import java.util.Map;
import java.util.function.Function;
import java.util.function.Predicate;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.func.Func1;
import cn.hutool.core.lang.func.LambdaUtil;
import cn.hutool.core.map.MapUtil;
/**
* 枚举工具类
*
@@ -56,7 +56,7 @@ public class EnumUtil {
}
/**
* 字符串转枚举,调用{@link Enum#valueOf(Class, String)}
* 获取给定位置的枚举值
*
* @param <E> 枚举类型泛型
* @param enumClass 枚举类

View File

@@ -0,0 +1,50 @@
package cn.hutool.core.date;
import org.junit.Assert;
import org.junit.Test;
import java.time.DayOfWeek;
public class WeekTest {
@Test
public void ofTest(){
//测试别名及大小写
Assert.assertEquals(Week.SUNDAY, Week.of("sun"));
Assert.assertEquals(Week.SUNDAY, Week.of("SUN"));
Assert.assertEquals(Week.SUNDAY, Week.of("Sun"));
//测试全名及大小写
Assert.assertEquals(Week.SUNDAY, Week.of("sunday"));
Assert.assertEquals(Week.SUNDAY, Week.of("Sunday"));
Assert.assertEquals(Week.SUNDAY, Week.of("SUNDAY"));
Assert.assertEquals(Week.MONDAY, Week.of("Mon"));
Assert.assertEquals(Week.MONDAY, Week.of("Monday"));
Assert.assertEquals(Week.TUESDAY, Week.of("tue"));
Assert.assertEquals(Week.TUESDAY, Week.of("tuesday"));
Assert.assertEquals(Week.WEDNESDAY, Week.of("wed"));
Assert.assertEquals(Week.WEDNESDAY, Week.of("WEDNESDAY"));
Assert.assertEquals(Week.THURSDAY, Week.of("thu"));
Assert.assertEquals(Week.THURSDAY, Week.of("THURSDAY"));
Assert.assertEquals(Week.FRIDAY, Week.of("fri"));
Assert.assertEquals(Week.FRIDAY, Week.of("FRIDAY"));
Assert.assertEquals(Week.SATURDAY, Week.of("sat"));
Assert.assertEquals(Week.SATURDAY, Week.of("SATURDAY"));
}
@Test
public void toJdkDayOfWeekTest(){
Assert.assertEquals(DayOfWeek.MONDAY, Week.MONDAY.toJdkDayOfWeek());
Assert.assertEquals(DayOfWeek.TUESDAY, Week.TUESDAY.toJdkDayOfWeek());
Assert.assertEquals(DayOfWeek.WEDNESDAY, Week.WEDNESDAY.toJdkDayOfWeek());
Assert.assertEquals(DayOfWeek.THURSDAY, Week.THURSDAY.toJdkDayOfWeek());
Assert.assertEquals(DayOfWeek.FRIDAY, Week.FRIDAY.toJdkDayOfWeek());
Assert.assertEquals(DayOfWeek.SATURDAY, Week.SATURDAY.toJdkDayOfWeek());
Assert.assertEquals(DayOfWeek.SUNDAY, Week.SUNDAY.toJdkDayOfWeek());
}
}