以下java反映代码有什么问题?

时间:2016-01-02 03:15:02

标签: java

我正在尝试使用反射方法调用URLClassLoader,

我检查了文件中有一个声明的构造函数,

URLClassLoader(URL[] urls)

但是以下代码会导致wrong number of arguments异常:

import java.io.*;
import java.net.*;
import java.lang.reflect.*;

public class Foo {
    public static void main (String[] args)
    {
        try {
            Method method = URLClassLoader.class.getMethod("newInstance", URL[].class);
            URLClassLoader loader = (URLClassLoader) method.invoke (
                    new Object [] { new URL ("http://127.0.0.1/a.class") });
        } catch (Exception e) {
            e.printStackTrace ();
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您正在传递一个URL对象来代替URL s

的数组

您需要创建一个包含URL的数组,并将该数组放在Object[]数组中:

URLClassLoader loader = (URLClassLoader) method.invoke (
    new Object [] {
        new URL[] { new URL ("http://127.0.0.1/a.class") }
    });