我在matlab脚本化(但面向对象)软件中使用了Java公共接口。
我们经常不得不调用java方法,并且可以完美地工作。如果我有以下java类:
package com.toto
public class Foo {
public static void printHello() {
System.out.println("Hello World");
}
}
然后在Matlab中,我只是调用:
com.toto.Foo.printHello
要在我的控制台命令中显示打印内容。
现在,我想做的事情类似于:
package com.toto
public class Foo {
public static <E> void printClass(Class<E> type) {
System.out.println("My type: " + type);
}
}
public class Goo {
....
}
在Matlab中:
com.toto.Foo.printClass(com.toto.Goo.class)
这实际上是行不通的。
有什么解决办法吗?
编辑:这是一个有效的Java示例,main中的代码应在matlab下执行:
public class Test
{
public static void main(String[] args)
{
Foo.printClass(Goo.class);
}
}
public class Foo
{
public static <E> void printClass(Class<E> type)
{
System.out.println("My type: " + type);
}
}
public class Goo {
public Goo() {};
}
这里的问题是该.class
语法在Matlab中无效:
com.toto.Goo.class
您可以做的是创建一个实例,Goo
然后对该对象使用getClass方法:
goo = com.toto.Goo();
com.toto.Foo.printClass(goo.getClass());
或者,如果您只想使用Java类的名称(例如,enum
对于无法实例化的Java ,则可以javaclass
从undocumentedmatlab.com使用)。
此功能的主要部分是
jclass = java.lang.Class.forName('com.toto.Goo', ...
true, ...
java.lang.Thread.currentThread().getContextClassLoader());
使用以下方法的forName方法Class
:
使用给定的类加载器返回与具有给定字符串名称的类或接口关联的Class对象。
第二种方法可以等效于Java.class
语法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句