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

📄 reflectionfunctioncall.java

📁 JAVA 数学程序库 提供常规的数值计算程序包
💻 JAVA
字号:
package jmathlib.core.functions;

//import MathLib.Tokens.FunctionToken;
//import MathLib.Tokens.VariableToken;
//import MathLib.Tokens.StringToken;
import jmathlib.core.tokens.OperandToken;
import jmathlib.core.tokens.Token;
//import MathLib.Tokens.Expression;
import jmathlib.core.interpreter.*;

//import java.applet.*;
//import java.util.Vector;
//import java.io.*;
//import java.net.*;
import java.lang.reflect.*;

/**Class for call a function from an external class using reflection*/
public class ReflectionFunctionCall extends ExternalFunction
{
    private Class externalClass;
    
    /**creates a reflection function call containing the class being called*/
    public ReflectionFunctionCall(Class _externalClass, String functionName)
    {
        super(functionName);
        
        externalClass = _externalClass;
    }
    
    public OperandToken evaluate(Token []operands)
    {
        boolean found = false;
        ErrorLogger.debugLine("evaluating reflection function");
        Method[] methodList = externalClass.getMethods();
        
        ErrorLogger.debugLine(name);
        for(int methodNo = 0; methodNo < methodList.length && !found; methodNo++)
        {
            String funcName = methodList[methodNo].toString();
            funcName = funcName.substring(0, funcName.indexOf("(") );
            funcName = funcName.substring( funcName.lastIndexOf(".") + 1);
            ErrorLogger.debugLine("method " + methodNo + " = " + funcName);
            
            if(funcName.equalsIgnoreCase(name))
            {
                ErrorLogger.debugLine("found method*********************************************");                
                evaluateMethod(methodList[methodNo]);
                found = true;
            }
        }
        
        return null;
    }
    
    private void evaluateMethod(Method calledMethod)
    {
        Class[] paramaterList = calledMethod.getParameterTypes();

        for(int paramaterNo = 0; paramaterNo < paramaterList.length; paramaterNo++)
        {
            ErrorLogger.debugLine("method " + paramaterNo + " = " + paramaterList[paramaterNo].toString());            
        }                
    }
    
    public String toString()
    {
        return "reflection object";
    }
}

⌨️ 快捷键说明

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