forked from Speiger/Primitive-Collections
38 lines
1.4 KiB
Plaintext
38 lines
1.4 KiB
Plaintext
package speiger.src.collections.PACKAGE.functions.function;
|
|
|
|
import java.util.function.BiFunction;
|
|
|
|
/**
|
|
* A Type Specific Unary Operator to support Compute/Merge functions with type specific methods to reduce boxing/unboxing
|
|
* @Type(T)
|
|
* @ValueType(V)
|
|
*/
|
|
#if !SAME_TYPE || TYPE_BOOLEAN || !JDK_TYPE
|
|
public interface UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE extends BiFunction<CLASS_TYPE, CLASS_VALUE_TYPE, CLASS_VALUE_TYPE>
|
|
#else
|
|
#if SAME_TYPE && TYPE_OBJECT
|
|
public interface UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE extends BiFunction<CLASS_TYPE, CLASS_VALUE_TYPE, CLASS_VALUE_TYPE>
|
|
#else
|
|
public interface UNARY_OPERATOR KEY_VALUE_GENERIC_TYPE extends BiFunction<CLASS_TYPE, CLASS_VALUE_TYPE, CLASS_VALUE_TYPE>, JAVA_BINARY_OPERATOR
|
|
#endif
|
|
#endif
|
|
{
|
|
#if TYPE_OBJECT && VALUE_OBJECT
|
|
#else if SAME_TYPE && !TYPE_OBJECT && JDK_TYPE && !TYPE_BOOLEAN
|
|
@Override
|
|
public default CLASS_VALUE_TYPE apply(CLASS_TYPE k, CLASS_VALUE_TYPE v) { return VALUE_TO_OBJ(APPLY_VALUE(OBJ_TO_KEY(k), OBJ_TO_VALUE(v))); }
|
|
#else
|
|
/**
|
|
* A Type Specifc apply method to reduce boxing/unboxing.
|
|
* Applies this function to the given arguments.
|
|
*
|
|
* @param k the first function argument
|
|
* @param v the second function argument
|
|
* @return the function result
|
|
*/
|
|
public VALUE_TYPE APPLY_VALUE(KEY_TYPE k, VALUE_TYPE v);
|
|
|
|
@Override
|
|
public default CLASS_VALUE_TYPE apply(CLASS_TYPE k, CLASS_VALUE_TYPE v) { return VALUE_TO_OBJ(APPLY_VALUE(OBJ_TO_KEY(k), OBJ_TO_VALUE(v))); }
|
|
#endif
|
|
} |