将Java与Matlab结合使用:将Class类型作为方法参数传递

Zangdar

我在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() {};
 }  
DVarga

这里的问题是该.class语法在Matlab中无效:

com.toto.Goo.class

您可以做的是创建一个实例,Goo然后对该对象使用getClass方法:

goo = com.toto.Goo();
com.toto.Foo.printClass(goo.getClass());

或者,如果您只想使用Java类的名称(例如,enum对于无法实例化的Java ,则可以javaclassundocumentedmatlab.com使用)

此功能的主要部分是

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

使用以下方法forName方法Class

使用给定的类加载器返回与具有给定字符串名称的类或接口关联的Class对象。

第二种方法可以等效于Java.class语法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将数组作为参数传递;使用用户通过Scanner Class输入在Java中设置数组

如何在Java中使用方法引用符号(Class :: method)将方法作为参数传递?

将类型参数作为类型参数的类传递给Java中的泛型方法

将泛型类型枚举作为参数传递(java)

将引用类型变量作为方法参数传递

如何将类型作为参数传递

将.class作为方法(JAVA)(BUKKIT / SPIGOT)(自定义事件系统)中的参数传递

Java如何避免将Class作为通用对象的参数传递

将字段名称/类型作为参数传递给Java中的方法

Java-如何将方法的返回类型作为参数传递?

如何将Swift类型作为方法参数传递?

Java8使用Lambda将方法作为参数传递

在Java 8之前将方法作为参数传递

Java-如何将方法作为参数传递?

将元类型作为函数参数传递

将方法作为Java方法的参数传递

将类的子类作为类型参数传递(类型参数是子类)

Android / Java-将变量作为参数传递给方法

将方法作为参数传递

我可以将Class类型作为过程参数传递吗

如何使用相同的方法变量将多个列表类型作为参数传递

将接口类型作为参数传递

将Class <?> cls作为方法参数传递?

将UITextDelegate类型的ViewController作为参数传递

将参数作为val传递给class

将 Class 实例作为参数传递

将枚举类型作为可选参数传递

将类型作为参数传递

将方法(java)中的值作为参数传递