java - 将 Java 与 Matlab 一起使用 : passing Class type as a method argument

标签 java matlab class generic-type-argument

我在 matlab 脚本(但面向对象)软件中使用 java 公共(public)接口(interface)。

我们经常需要调用 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 的情况下),您可以使用 javaclass来自 undocumentedmatlab.com .

这个函数的主要部分是

jclass = java.lang.Class.forName('com.toto.Goo', ...
    true, ...
    java.lang.Thread.currentThread().getContextClassLoader());

它使用 forName 的方法:

Returns the Class object associated with the class or interface with the given string name, using the given class loader.

这第二种方法可以用作 Java .class 语法的等价物。

关于java - 将 Java 与 Matlab 一起使用 : passing Class type as a method argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39273129/

相关文章:

javascript - Jquery 如果元素具有相同的类?

c# - C# 将类序列化为 XML

java - 同一件事得到不同的结果

matlab - | 之间有什么区别?和||在 MATLAB 中?

python 3 : Adding function to a already created object

matlab - 用不同的标记和颜色绘制两个 y 轴

matlab - 确定在 MATLAB 中运行的是 x64 还是 x86 操作系统

java - 将字节转换为位图

java - 如何在 Linux 系统上使用 Java 创建 mysql 转储?

java - 有人可以帮助解释这个indexOf()实现是如何工作的吗?