
com.moon.core.lang.ref.Location Maven / Gradle / Ivy
package com.moon.core.lang.ref;
import com.moon.core.util.Table;
import com.moon.core.util.TableImpl;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.Supplier;
/**
* 推荐使用{@link Table}、{@link TableImpl}
*
* @author moonsky
*/
@Deprecated
public interface Location {
/**
* 设置一个值
*
* @param x namespace
* @param y key
* @param z value
*
* @return this
*/
Location put(X x, Y y, Z z);
/**
* 放置所有
*
* @param x namespace
* @param map values entry
*
* @return this
*/
Location putAll(X x, Map extends Y, ? extends Z> map);
/**
* 获取一个值
*
* @param x namespace
* @param y key
*
* @return this
*/
Z get(X x, Y y);
/**
* 清空
*
* @return this
*/
Location clear();
/**
* 清空
*
* @param x namespace
*
* @return this
*/
Location clear(X x);
/**
* 获取值,或返回默认值
*
* @param x namespace
* @param y key
* @param defaultValue defaultValue
*
* @return this
*/
default Z getOrDefault(X x, Y y, Z defaultValue) {
Z value = get(x, y);
return value == null ? defaultValue : value;
}
/**
* 获取值,或返回默认值
*
* @param x namespace
* @param y key
* @param supplier 默认值 getter
*
* @return value
*/
default Z getOrElse(X x, Y y, Supplier supplier) {
Z value = get(x, y);
return value == null ? supplier.get() : value;
}
/**
* 获取值,或返回默认值
*
* @return value
*/
default Z getOrWithDefault(X x, Y y, Z defaultValue) {
Z value = get(x, y);
if (value == null) { put(x, y, value = defaultValue); }
return value;
}
/**
* 获取值,或返回执行结果
*
* @param x namespace
* @param y key
* @param supplier 默认值
*
* @return value
*/
default Z getOrWithElse(X x, Y y, Supplier supplier) {
Z value = get(x, y);
if (value == null) { put(x, y, value = supplier.get()); }
return value;
}
/**
* 获取值,或返回执行结果
*
* @param x namespace
* @param y key
* @param computer computer
*
* @return value
*/
default Z getOrWithCompute(X x, Y y, BiFunction computer) {
Z value = get(x, y);
if (value == null) { put(x, y, value = computer.apply(x, y)); }
return value;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy