Matlab中Java对象字段的访问

Matlab中Java对象字段的访问,java,matlab,reflection,undocumented-behavior,Java,Matlab,Reflection,Undocumented Behavior,我正在使用.jar java库进行图像分析。我想访问对象中的某些数据,但没有提供公共get/set方法;使用fieldnames(object,'-full')方法返回一个空单元格数组,因此我假设所有字段都是私有的 然而,当我在Matlab变量查看器中查看对象时,我想要的数据字段是可见的(我假设变量查看器显示所有对象字段和属性,尽管我对此也不确定) 在Matlab中有没有任何方法可以通过编程方式访问这些字段?我看过一些关于使用反射的帖子,但不清楚这在Matlab中是如何工作的 下面是一个使用Ja

我正在使用.jar java库进行图像分析。我想访问对象中的某些数据,但没有提供公共get/set方法;使用
fieldnames(object,'-full')
方法返回一个空单元格数组,因此我假设所有字段都是私有的

然而,当我在Matlab变量查看器中查看对象时,我想要的数据字段是可见的(我假设变量查看器显示所有对象字段和属性,尽管我对此也不确定)

在Matlab中有没有任何方法可以通过编程方式访问这些字段?我看过一些关于使用反射的帖子,但不清楚这在Matlab中是如何工作的


下面是一个使用Java反射访问类中私有字段的示例(借用自)

采用以下Java类(不要忘记使用
javaaddpath
)使其可供MATLAB访问:

Test.java 首先让我们实例化该类:

>> t = Test()
t =
Test@62748e
>> t.setStr('foo')
>> t.str
No appropriate method, property, or field str for class Test. 
显然,试图访问私有字段会抛出一个错误。下面是我们如何使用反射:

>> f = t.getClass().getDeclaredField('str')
f =
private java.lang.String Test.str
>> f.setAccessible(true)
>> f.get(t)
ans =
foo

作为对现已删除的注释的响应:
methodsview
列出了类公开的公共方法。我想访问原始开发人员没有提供任何公共get/set方法的数据。可能有很好的理由保持变量私有,但出于我的需要,我想提取它进行分析。我不明白的是Matlab查看器(和工具提示!)如何“看到”类中的数据,但我无法在程序中访问它。
>> f = t.getClass().getDeclaredField('str')
f =
private java.lang.String Test.str
>> f.setAccessible(true)
>> f.get(t)
ans =
foo