All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.moon.core.math.NumFns Maven / Gradle / Ivy

package com.moon.core.math;

/**
 * @author moonsky
 */
enum NumFns {
    /**
     * 大于
     */
    GT {
        @Override
        public boolean compare(Number value1, Number value2) {
            return nonNull(value1, value2) && doCompare(value1, value2) > 0;
        }
    },
    /**
     * 小于
     */
    LT {
        @Override
        public boolean compare(Number value1, Number value2) {
            return nonNull(value1, value2) && doCompare(value1, value2) < 0;
        }
    },
    /**
     * 等于
     */
    EQ {
        @Override
        public boolean compare(Number value1, Number value2) {
            return (value1 == null && value2 == null) || (nonNull(value1, value2) && doCompare(value1, value2) == 0);
        }
    },
    /**
     * 大于等于
     */
    GE {
        @Override
        public boolean compare(Number value1, Number value2) {
            return !LT.compare(value1, value2);
        }
    },
    /**
     * 小于等于
     */
    LE {
        @Override
        public boolean compare(Number value1, Number value2) {
            return !GT.compare(value1, value2);
        }
    },
    /**
     * 不等于
     */
    NE {
        @Override
        public boolean compare(Number value1, Number value2) {
            return !EQ.compare(value1, value2);
        }
    };

    private static boolean nonNull(Number value1, Number value2) {
        return value1 != null && value2 != null;
    }

    private static int doCompare(Number value1, Number value2) {
        if (value1 instanceof Comparable) {
            return ((Comparable) value1).compareTo(value2);
        }
        throw new IllegalArgumentException();
    }

    public abstract boolean compare(Number value1, Number value2);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy