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

com.moon.core.util.OSUtil Maven / Gradle / Ivy

package com.moon.core.util;

import com.moon.core.lang.Executable;
import com.moon.core.lang.ThrowUtil;

import java.util.function.Supplier;

/**
 * 系统工具
 *
 * @author moonsky
 */
public final class OSUtil {

    private OSUtil() { ThrowUtil.noInstanceError(); }

    private static final boolean osIsLinux = nameHas("linux");
    private static final boolean osIsMacOsX = nameHas("mac name x");
    private static final boolean osIsWindows = nameHas("windows");

    public static  T get(
        Supplier ifLinux, Supplier ifWindows, Supplier ifMac, Supplier other
    ) {
        return (onLinux() ? ifLinux : (onWindows() ? ifWindows : (onMacOS() ? ifMac : other))).get();
    }

    public static boolean onLinux() { return osIsLinux; }

    public static void ifOnLinux(Executable executor) {
        if (onLinux()) {
            executor.execute();
        }
    }

    public static boolean onMacOS() { return osIsMacOsX; }

    public static void ifOnMacOS(Executable executor) {
        if (onMacOS()) {
            executor.execute();
        }
    }

    public static boolean onWindows() { return osIsWindows; }

    public static void ifOnWindows(Executable executor) {
        if (onWindows()) {
            executor.execute();
        }
    }

    public static boolean onWindowsXP() { return nameHas("windows xp"); }

    public static boolean onWindows2003() { return nameHas("windows 2003"); }

    public static boolean onWindowsVista() { return nameHas("windows vista"); }

    public static boolean onWindows7() { return nameHas("windows 7"); }

    public static boolean onWindows8() { return nameHas("windows 8"); }

    public static boolean onWindows10() { return nameHas("windows 10"); }

    private static boolean nameHas(String search) {
        String name = System.getProperty("os.name");
        return (name == null ? "" : name.toLowerCase()).contains(search);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy