This commit is contained in:
Redkale
2016-10-10 13:52:20 +08:00
parent ddef9018e2
commit 93fef97c56
3 changed files with 50 additions and 6 deletions

View File

@@ -23,16 +23,20 @@ public abstract class AnyValue {
/** /**
* 可读写的AnyValue默认实现类 * 可读写的AnyValue默认实现类
* *
* <p>
* 详情见: http://redkale.org
*
* @author zhangjx * @author zhangjx
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static final class DefaultAnyValue extends AnyValue { public static final class DefaultAnyValue extends AnyValue {
/**
* 区分name大小写的比较策略
*
*/
public static final BiPredicate<String, String> EQUALS = (name1, name2) -> name1.equals(name2); public static final BiPredicate<String, String> EQUALS = (name1, name2) -> name1.equals(name2);
/**
* 不区分name大小写的比较策略
*/
public static final BiPredicate<String, String> EQUALSIGNORE = (name1, name2) -> name1.equalsIgnoreCase(name2); public static final BiPredicate<String, String> EQUALSIGNORE = (name1, name2) -> name1.equalsIgnoreCase(name2);
private final BiPredicate<String, String> predicate; private final BiPredicate<String, String> predicate;
@@ -41,34 +45,74 @@ public abstract class AnyValue {
private Entry<AnyValue>[] entityValues = new Entry[0]; private Entry<AnyValue>[] entityValues = new Entry[0];
/**
* 创建空的DefaultAnyValue对象
*
* @return DefaultAnyValue对象
*/
public static final DefaultAnyValue create() { public static final DefaultAnyValue create() {
return new DefaultAnyValue(); return new DefaultAnyValue();
} }
/**
* 创建含name-value值的DefaultAnyValue对象
*
* @param name name
* @param value value值
*
* @return DefaultAnyValue对象
*/
public static final DefaultAnyValue create(String name, String value) { public static final DefaultAnyValue create(String name, String value) {
DefaultAnyValue conf = new DefaultAnyValue(); DefaultAnyValue conf = new DefaultAnyValue();
conf.addValue(name, value); conf.addValue(name, value);
return conf; return conf;
} }
/**
* 创建含name-value值的DefaultAnyValue对象
*
* @param name name
* @param value value值
*
* @return DefaultAnyValue对象
*/
public static final DefaultAnyValue create(String name, AnyValue value) { public static final DefaultAnyValue create(String name, AnyValue value) {
DefaultAnyValue conf = new DefaultAnyValue(); DefaultAnyValue conf = new DefaultAnyValue();
conf.addValue(name, value); conf.addValue(name, value);
return conf; return conf;
} }
/**
* 创建一个区分大小写比较策略的DefaultAnyValue对象
*
*/
public DefaultAnyValue() { public DefaultAnyValue() {
this(false); this(false);
} }
/**
* 创建DefaultAnyValue对象
*
* @param ignoreCase name是否不区分大小写
*/
public DefaultAnyValue(boolean ignoreCase) { public DefaultAnyValue(boolean ignoreCase) {
this.predicate = ignoreCase ? EQUALSIGNORE : EQUALS; this.predicate = ignoreCase ? EQUALSIGNORE : EQUALS;
} }
/**
* 创建DefaultAnyValue对象
*
* @param predicate name比较策略
*/
public DefaultAnyValue(BiPredicate<String, String> predicate) { public DefaultAnyValue(BiPredicate<String, String> predicate) {
this.predicate = predicate; this.predicate = predicate;
} }
/**
* 创建共享此内容的DefaultAnyValue对象
*
* @return DefaultAnyValue对象
*/
public DefaultAnyValue duplicate() { public DefaultAnyValue duplicate() {
DefaultAnyValue rs = new DefaultAnyValue(this.predicate); DefaultAnyValue rs = new DefaultAnyValue(this.predicate);
rs.stringValues = this.stringValues; rs.stringValues = this.stringValues;

View File

@@ -63,8 +63,8 @@ import static jdk.internal.org.objectweb.asm.Opcodes.*;
* </pre></blockquote> * </pre></blockquote>
* <p> * <p>
* 映射Field时field必须满足以下条件之一 <br> * 映射Field时field必须满足以下条件之一 <br>
* 1、field属性是public且非final <br> * 1、field属性是public且非final <br>
* 2、至少存在对应的getter、setter方法中的一个 <br> * 2、至少存在对应的getter、setter方法中的一个 <br>
* 当不存在getter方法时get操作固定返回null <br> * 当不存在getter方法时get操作固定返回null <br>
* 当不存在setter方法时set操作为空方法 <br> * 当不存在setter方法时set操作为空方法 <br>
* <p> * <p>

View File

@@ -1,4 +1,4 @@
/** /**
* RedKale工具包 * Redkale工具包
*/ */
package org.redkale.util; package org.redkale.util;