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

com.moon.runner.core.InvokeArgs2 Maven / Gradle / Ivy

package com.moon.runner.core;

import com.moon.runner.core.InvokeEnsure.EnsureArgs2;

import java.lang.reflect.Method;
import java.util.List;

import static com.moon.core.lang.ThrowUtil.noInstanceError;

/**
 * @author moonsky
 */
final class InvokeArgs2 extends InvokeAbstract {

    private InvokeArgs2() { noInstanceError(); }

    static AsRunner staticCall2(Class source, String name, AsRunner no1, AsRunner no2) {
        List ms = staticMethods(source, name);
        switch (ms.size()) {
            case 0:
                return ParseUtil.doThrow(source, name);
            case 1:
                return ensure(ms.get(0), no1, no2);
            default:
                return ParseUtil.doThrow("暂未支持");
        }
    }

    static AsRunner memberCall2(AsValuer prev, Class source, String name, AsRunner no1, AsRunner no2) {
        List ms = memberMethods(source, name);
        switch (ms.size()) {
            case 0:
                return ParseUtil.doThrow(source, name);
            case 1:
                return new EnsureArgs2(ms.get(0), prev, no1, no2);
            default:
                return ParseUtil.doThrow("暂未支持");
        }
    }

    final static AsRunner parse(
        AsValuer prev, String name, boolean isStatic, AsRunner no1, AsRunner no2
    ) {
        if (isStatic) {
            // 静态方法
            Class type = ((DataClass) prev).getValue();
            return staticCall2(type, name, no1, no2);
        } else if (prev.isConst()) {
            Class type = prev.run().getClass();
            return memberCall2(prev, type, name, no1, no2);
        } else {
            // 成员方法
            return ParseUtil.doThrow("暂未支持");
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy