Java 在数组类[]的声明中找不到符号

Java 在数组类[]的声明中找不到符号,java,Java,我正在尝试从.jar调用方法 但当我想为getDeclaredMethod声明参数数组时,我在上遇到了一个错误“找不到符号” 整体方法 public void CallCloseWindow(String title){ //export dll InputStream in = staticapi.class.getResourceAsStream("CloseWindow.dll"); File fileOut = new File(Sys

我正在尝试从.jar调用方法

但当我想为getDeclaredMethod声明参数数组时,我在上遇到了一个错误“找不到符号”

整体方法

 public void CallCloseWindow(String title){
        //export dll
        InputStream in = staticapi.class.getResourceAsStream("CloseWindow.dll"); 
        File fileOut = new File(System.getProperty("C:\\Java\\CloseWindow.dll")); 
        OutputStream out = new FileOutputStream(fileOut); 
        int c;
        while ((c = in.read()) != -1) { 
            out.write(c);
        }
        in.close(); 
        out.close(); 
        //call from jar class
        Class[] params = new Class[]{ String };
        Object[] parms = new Object[] { new String(title) };
        URL url=new URL("jar:file:/callapi.jar/");
        URLClassLoader ucl = new URLClassLoader(new URL[] { url });
        Class obj = Class.forName("callapi.callapi", true, ucl);
        Method m = obj.getDeclaredMethod("CloseWindow",params);
        Object instance = obj.newInstance();
        Object result = m.invoke(instance,parms);
    }

有什么问题吗?String.TYPE也不起作用

尝试使用
Class[]params=newclass[]{String.Class}

尝试使用
Class[]params=newclass[]{String.Class}

尝试:

Class[] params = new Class[]{ String.class };
尝试:


正如其他人指出的,您只是错过了
.class
。在声明时初始化数组时无需调用
new
,不过:

Class[] params = { String.class };
应该可以。(只有在以后重新初始化数组,或者例如创建匿名数组时,才需要
new

实际上,您根本不需要创建
参数
数组。因为
Class.getDeclaredMethods
是一种您可以直接执行的方法

Method m = obj.getDeclaredMethod("CloseWindow", String.class);
                                                \__________/
                                                     |
        this will be transformed to a Class[] on the fly by the constructor

正如其他人指出的,您只是错过了
.class
。在声明时初始化数组时无需调用
new
,不过:

Class[] params = { String.class };
应该可以。(只有在以后重新初始化数组,或者例如创建匿名数组时,才需要
new

实际上,您根本不需要创建
参数
数组。因为
Class.getDeclaredMethods
是一种您可以直接执行的方法

Method m = obj.getDeclaredMethod("CloseWindow", String.class);
                                                \__________/
                                                     |
        this will be transformed to a Class[] on the fly by the constructor

这是Java?那是什么样的构造-
newclass[]{String.Class}
是的,它是Java,你正在用一个元素(String.Class)构造一个类数组。@Adel:这是完全标准的Java(但是你引用的位不完整,没有
new
),没有任何意义。@Fido-非常感谢你,这非常强大。@aix-修复了它,非常感谢!这是Java?那是什么样的构造-
newclass[]{String.Class}
是的,它是Java,你正在用一个元素(String.Class)构造一个类数组。@Adel:这是完全标准的Java(但是你引用的位不完整,没有
new
),没有任何意义。@Fido-非常感谢你,这非常强大。@aix-修复了它,非常感谢!