⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 invokerhelper.java

📁 大名鼎鼎的java动态脚本语言。已经通过了sun的认证
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            }            return newlist;        }        else {            throw new BitwiseNegateEvaluatingException("Cannot bitwise negate type " + value.getClass().getName() + ", value " + value);        }    }    public static boolean isCase(Object switchValue, Object caseExpression) {        return asBool(invokeMethod(caseExpression, "isCase", new Object[]{switchValue}));    }    public static boolean compareIdentical(Object left, Object right) {        return left == right;    }    public static boolean compareEqual(Object left, Object right) {        return getInstance().objectsEqual(left, right);    }    public static Matcher findRegex(Object left, Object right) {        return getInstance().objectFindRegex(left, right);    }    public static boolean matchRegex(Object left, Object right) {        return getInstance().objectMatchRegex(left, right);    }    public static Pattern regexPattern(Object regex) {        return getInstance().regexPattern(regex);    }    public static boolean compareNotEqual(Object left, Object right) {        return !getInstance().objectsEqual(left, right);    }    public static boolean compareLessThan(Object left, Object right) {        return getInstance().compareTo(left, right) < 0;    }    public static boolean compareLessThanEqual(Object left, Object right) {        return getInstance().compareTo(left, right) <= 0;    }    public static boolean compareGreaterThan(Object left, Object right) {        return getInstance().compareTo(left, right) > 0;    }    public static boolean compareGreaterThanEqual(Object left, Object right) {        return getInstance().compareTo(left, right) >= 0;    }    public static Integer compareTo(Object left, Object right) {        int answer = getInstance().compareTo(left, right);        if (answer == 0) {            return ZERO;        }        else {            return answer > 0 ? ONE : MINUS_ONE;        }    }    public static Tuple createTuple(Object[] array) {        return new Tuple(array);    }    public static SpreadList spreadList(Object value) {        if (value instanceof List) {            // value is a list.            Object[] values = new Object[((List) value).size()];            int index = 0;            Iterator it = ((List) value).iterator();            for (; it.hasNext();) {                values[index++] = it.next();            }            return new SpreadList(values);        }        else {            throw new SpreadListEvaluatingException("Cannot spread the type " + value.getClass().getName() + ", value " + value);        }    }    public static SpreadMap spreadMap(Object value) {        if (value instanceof Map) {            Object[] values = new Object[((Map) value).keySet().size() * 2];            int index = 0;            Iterator it = ((Map) value).keySet().iterator();            for (; it.hasNext();) {                Object key = it.next();                values[index++] = key;                values[index++] = ((Map) value).get(key);            }            return new SpreadMap(values);        }        else {            throw new SpreadMapEvaluatingException("Cannot spread the map " + value.getClass().getName() + ", value " + value);        }    }    public static List createList(Object[] values) {        ArrayList answer = new ArrayList(values.length);        for (int i = 0; i < values.length; i++) {            if (values[i] instanceof SpreadList) {                SpreadList slist = (SpreadList) values[i];                for (int j = 0; j < slist.size(); j++) {                    answer.add(slist.get(j));                }            }            else {                answer.add(values[i]);            }        }        return answer;    }    public static Map createMap(Object[] values) {        Map answer = new HashMap(values.length / 2);        int i = 0;        while (i < values.length - 1) {            if ((values[i] instanceof SpreadMap) && (values[i+1] instanceof Map)) {                Map smap = (Map) values[i+1];                Iterator iter = smap.keySet().iterator();                for (; iter.hasNext(); ) {                    Object key = (Object) iter.next();                    answer.put(key, smap.get(key));                }                i+=2;            }            else {                answer.put(values[i++], values[i++]);            }        }        return answer;    }    public static List createRange(Object from, Object to, boolean inclusive) {        if (!inclusive) {            if (compareEqual(from,to)){                return new EmptyRange((Comparable)from);            }            if (compareGreaterThan(from, to)) {                to = invokeMethod(to, "next", EMPTY_ARGS);            }            else {                to = invokeMethod(to, "previous", EMPTY_ARGS);            }        }        if (from instanceof Integer && to instanceof Integer) {            return new IntRange(asInt(from), asInt(to));        }        else {            return new ObjectRange((Comparable) from, (Comparable) to);        }    }    public static int asInt(Object value) {        return getInstance().asInt(value);    }    public static void assertFailed(Object expression, Object message) {        if (message == null || "".equals(message)) {            throw new AssertionError("Expression: " + expression);        }        else {            throw new AssertionError("" + message + ". Expression: " + expression);        }    }    public static Object runScript(Class scriptClass, String[] args) {        Binding context = new Binding(args);        Script script = createScript(scriptClass, context);        return invokeMethod(script, "run", EMPTY_ARGS);    }    public static Script createScript(Class scriptClass, Binding context) {        // for empty scripts        if (scriptClass == null) {            return new Script() {                public Object run() {                    return null;                }            };        }        try {            final GroovyObject object = (GroovyObject) scriptClass.newInstance();            Script script = null;            if (object instanceof Script) {                script = (Script) object;            }            else {                // it could just be a class, so lets wrap it in a Script wrapper                // though the bindings will be ignored                script = new Script() {                    public Object run() {                        object.invokeMethod("main", EMPTY_MAIN_ARGS);                        return null;                    }                };                setProperties(object, context.getVariables());            }            script.setBinding(context);            return script;        }        catch (Exception e) {            throw new GroovyRuntimeException("Failed to create Script instance for class: " + scriptClass + ". Reason: " + e,                    e);        }    }    /**     * Sets the properties on the given object     *     * @param object     * @param map     */    public static void setProperties(Object object, Map map) {        getMetaClass(object).setProperties(object, map);    }    public static String getVersion() {        String version = null;        Package p = Package.getPackage("groovy.lang");        if (p != null) {            version = p.getImplementationVersion();        }        if (version == null) {            version = "";        }        return version;    }    /**     * Allows conversion of arrays into a mutable List     *     * @return the array as a List     */    protected static List primitiveArrayToList(Object array) {        int size = Array.getLength(array);        List list = new ArrayList(size);        for (int i = 0; i < size; i++) {            list.add(Array.get(array, i));        }        return list;    }    /**     * Writes the given object to the given stream     */    public static void write(Writer out, Object object) throws IOException {        if (object instanceof String) {            out.write((String) object);        }        else if (object instanceof Object[]) {            out.write(toArrayString((Object[]) object));        }        else if (object instanceof Map) {            out.write(toMapString((Map) object));        }        else if (object instanceof Collection) {            out.write(toListString((Collection) object));        }        else if (object instanceof Writable) {            Writable writable = (Writable) object;            writable.writeTo(out);        }        else if (object instanceof InputStream || object instanceof Reader) {            // Copy stream to stream            Reader reader;            if (object instanceof InputStream) {                reader = new InputStreamReader((InputStream) object);            }            else {                reader = (Reader) object;            }            char[] chars = new char[8192];            int i;            while ((i = reader.read(chars)) != -1) {                out.write(chars, 0, i);            }            reader.close();        }        else {            out.write(toString(object));        }    }    public static Object box(boolean value) {        return value ? Boolean.TRUE : Boolean.FALSE;    }    public static Object box(byte value) {        return new Byte(value);    }    public static Object box(char value) {        return new Character(value);    }    public static Object box(short value) {        return new Short(value);    }    public static Object box(int value) {        return integerValue(value);    }    public static Object box(long value) {        return new Long(value);    }    public static Object box(float value) {        return new Float(value);    }    public static Object box(double value) {        return new Double(value);    }    public static byte byteUnbox(Object value) {        Number n = (Number) asType(value, Byte.class);        return n.byteValue();    }    public static char charUnbox(Object value) {        Character n = (Character) asType(value, Character.class);        return n.charValue();    }    public static short shortUnbox(Object value) {        Number n = (Number) asType(value, Short.class);        return n.shortValue();    }    public static int intUnbox(Object value) {        Number n = (Number) asType(value, Integer.class);        return n.intValue();    }    public static boolean booleanUnbox(Object value) {        Boolean n = (Boolean) asType(value, Boolean.class);        return n.booleanValue();    }    public static long longUnbox(Object value) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -