我知道這是可能的使用JMX這樣調用Java類中的方法:調用方法通過Java JMX功能,其中的參數是一個ArrayList
try { JMXServiceURL serviceUrl = new JMXServiceURL(URL);
jmxConnector = JMXConnectorFactory.connect(serviceUrl, null);
ObjectName objectName = new ObjectName("whatever");
MBeanServerConnection mbeanConn = jmxConnector.getMBeanServerConnection();
ret = (String)mbeanConn.invoke(objectName, methodName, paramsForInvoke, signitureForInvoke);
}
如果我們想調用與參數的方法,我們需要將實際參數作爲Object數組傳遞,並將參數的類型作爲String數組傳遞。 因此,讓我們繼續上面的例子,讓我們說,如果我想通過所謂的SLIST一個String的ArrayList:
ArrayList<String> sList = new ArrayList<String>();
sList.add("kapd_be");
Object paramsForInvoke[] = {sList};
String signitureForInvoke[] = {ArrayList.class.getName()};
在這種情況下,一切工作正常,該方法被用適當的參數調用。 我可以在調用的方法中提取「kapd_be」字符串。
但是,如果我想讓參數成爲其他類的ArrayList讓我們說SortInfo(這是我寫的POJO類,包含幾個字段)代碼不會執行,我甚至不能調用方法,顯然沒有參數可以被提取。 這很奇怪,因爲唯一的區別是這樣的:
ArrayList<SortInfo> sList = new ArrayList<SortInfo>();
爲什麼?以及如何將SortInfo列表傳遞給該方法?
http://docs.oracle.com/javase/6/docs/api/javax/management/MBeanServerConnection.html
實際執行的seriazable接口解決我的問題,但我接受你的答案的詳細解釋 –
它逃過我通知你回答了你自己的問題... :) – Nicholas