java matlab混合編程的時候當返回值是Struct類型(matlab中的返回類型)如何來取得(java中)其值?
上網找,看到這個網頁:http://www.mathworks.cn/cn/help/matlab/matlab_external/passing-data-to-a-java-method.html ,上面說Struct類型不支持;如下圖:
然後我就沒辦法了,但是獲得的Object值應該是可以設置斷點操作的吧,然後我就設置斷點來看到到底是個什麼值?如下圖:
不過好像沒有啥屬性的,那怎麼取得值呢?看到右邊MWStructArray,這個類,這個是javabuilder.jar裡面的,這個可能會有用,好吧,先把這個值取出來,轉換為MWStructArray;如下代碼:
[java] view plaincopyprint?TestDemo td=new TestDemo();
Object[] result=td.testFun(6,data);
MWStructArray msa=(MWStructArray)result[5];
TestDemo td=new TestDemo();
Object[] result=td.testFun(6,data);
MWStructArray msa=(MWStructArray)result[5];
然後使用msa加一個點,來智能提示看它有哪些方法,如下:
看到有一個fieldNames()方法,試驗了一下這個方法返回的是一個Struct對象的全部屬性。很好,那麼如何獲得呢,在往下看,有一個get()方法,輸入可以使int,int[]。再次試驗,發現get(1)就是第一個屬性,但是我想如果可以直接get(paraName)不是更好麼,無奈,好像沒有這個方法。不過可以使用一個map來映射,然後直接通過字符串來獲得值也是可以的,如下;