gpt4 book ai didi

java - 在 Matlab 中访问 Java 对象字段

转载 作者:行者123 更新时间:2023-12-02 06:55:53 26 4
gpt4 key购买 nike

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

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

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

谢谢

最佳答案

下面是使用 Java 反射访问类中私有(private)字段的示例(借用 this post )

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

测试.java

class Test
{
private String str;
public Test() {}
public void setStr(String value) { str = value; }
}

首先让我们实例化该类:

>> t = Test()
t =
Test@62748e
>> t.setStr('foo')
>> t.str
No appropriate method, property, or field str for class Test.

显然尝试访问私有(private)字段会引发错误。以下是我们如何使用反射:

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

关于java - 在 Matlab 中访问 Java 对象字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17366191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com