如何将JTextField [] []作为arg传递给动态加载的java类方法?

时间:2013-11-16 12:54:30

标签: java swing exception reflection invoke

我有一个JComboBox,通过classLoader包含动态加载的java类。创建对象后,我想传递给它的一个方法JTextField [] [[] as arg。

final JTextField[][] gameFields = new JTextField[12][12];

Object runtimeStrategyObject = strategyClass.newInstance();
Method method = strategyClass.getDeclaredMethod("move",JTextField[][].class);
method.invoke(runtimeStrategyObject, gameFields);

方法我想调用

public void move(JTextArea[][] gameFields) {
    // method body
}

问题是我得到“NoSuchMethodException”。任何想法如何解决它?

1 个答案:

答案 0 :(得分:2)

您的move(JTextArea[][] gameFields)方法的参数类型为JTextArea[][].class。因此,正确的方法应该是通过将getDeclaredMethod作为参数类型传递来尝试使用JTextArea[][].class获取函数:

Method method = strategyClass.getDeclaredMethod("move", JTextArea[][].class);

或者,将move方法参数类型更改为JTextField[][]

public void move(JTextField[][] gameFields) {
    // method body
}

查看文档:{​​{3}}