Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个将从限定名称中调用第二个的方法_Java_String_Class_Reflection_Methods - Fatal编程技术网

Java 创建一个将从限定名称中调用第二个的方法

Java 创建一个将从限定名称中调用第二个的方法,java,string,class,reflection,methods,Java,String,Class,Reflection,Methods,我需要一个从第二个类调用第二个类的方法。例如 Class commandclass = Class.forName("foo.Class"); Method method = commandclass.getMethod("method", String.class, String.class); method.invoke(method, "param1", "param2"); 但我试着用一种方法来表达,但比我想象的要困难得多。我希望它可以从任何类型的任何类调用任何公共方法。只需将所需的

我需要一个从第二个类调用第二个类的方法。例如

Class commandclass = Class.forName("foo.Class");
Method method = commandclass.getMethod("method", String.class, String.class);
method.invoke(method, "param1", "param2"); 

但我试着用一种方法来表达,但比我想象的要困难得多。我希望它可以从任何类型的任何类调用任何公共方法。

只需将所需的所有参数传递给方法并调用代码即可

// pass "null" for parIdentifiers and parameters if it's a method without any
public static void invokeMethod(String className, String methodName, 
                       Class<?>[] parIdentifiers, Object[] parameters) {
    try {

        // Your code
        Class<?> commandclass = Class.forName(className);
        Method method = commandclass.getMethod(methodName, parIdentifiers);
        method.invoke(method, parameters); 

    } catch (NoSuchMethodException | SecurityException | ClassNotFoundException 
           | IllegalAccessException | IllegalArgumentException 
           | InvocationTargetException e) {
        e.printStackTrace();
    }
}

public static void main(String[] args) {
    Class<?>[] types = new Class<?>[]{String.class, String.class};
    Object[] params = new Object[]{"param1", "param2"};
    invokeMethod("foo.Class", "method", types, params);
}
//如果它是一个没有任何
公共静态void invokeMethod(字符串类名称、字符串方法名称、,
类[]parIdentifiers,对象[]参数){
试一试{
//你的代码
Class commandclass=Class.forName(className);
Method=commandclass.getMethod(methodName,parIdentifiers);
调用(方法、参数);
}catch(NoSuchMethodException | SecurityException | ClassNotFoundException
|IllegalAccessException | IllegalArgumentException
|调用目标异常(e){
e、 printStackTrace();
}
}
公共静态void main(字符串[]args){
类[]类型=新类[]{String.Class,String.Class};
Object[]params=新对象[]{“param1”、“param2”};
invokeMethod(“foo.Class”、“method”、类型、参数);
}

您的问题很不清楚。您似乎知道反射可以用来调用方法,那么具体的问题是什么呢?举一个你想加载的类的例子,描述你想调用的方法。通过反射,你可以调用这个方法,所以你遇到的问题是什么?我需要一个方法,我可以调用不同的方法。我需要在有或没有不同参数的各种方法上工作谢谢谢谢谢谢