歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java Matlab混合編程之返回值Struct類型

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來映射,然後直接通過字符串來獲得值也是可以的,如下;

Copyright © Linux教程網 All Rights Reserved