[英]Using Java with Matlab: passing Class type as a method argument
我在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类的名称(或者例如在Java enum
的情况下无法实例化),您可以使用来自undocumentedmatlab.com的 javaclass
。
这个功能的主要部分是
jclass = java.lang.Class.forName('com.toto.Goo', ...
true, ...
java.lang.Thread.currentThread().getContextClassLoader());
它使用Class
的forName方法:
使用给定的类加载器返回与具有给定字符串名称的类或接口关联的Class对象。
第二种方法可以用作Java .class
语法的等效方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.