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

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

package com.moon.runner.core;

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

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

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

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

    static AsRunner memberCallN(AsRunner prev, Class type, String name, AsRunner...params){
        List ms = memberMethods(type, name);
        switch (ms.size()) {
            case 0:
                return ParseUtil.doThrow(type, name);
            case 1:
                return new EnsureArgsN(ms.get(0),prev,params);
            default:
                return ParseUtil.doThrow("暂未支持");
        }
    }

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy