3
我在一個matlab腳本化(但面向對象)的軟件中使用了java公共接口。在Matlab中使用Java:將Class類型作爲方法參數傳遞
我們經常需要調用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例子,在主代碼應在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() {};
}
這實際上是我在做什麼。我有一個靜態getDefault()方法,因爲Goo實際上是一個枚舉,所以我不能在其中有一個公共構造函數。 但是,當然我在java 1.6上,所以我不能在接口中執行getDefault()方法,也不能在抽象類中執行getDefault()方法。所以我基本上依靠開發人員的善意來實現這個方法。 這就是爲什麼我不喜歡這個解決方案(並且我真的不喜歡java,在旁邊)。 – Zangdar
爲您更新了答案。我希望它能滿足你的需求。 – DVarga
非常感謝,Mathworks不鼓勵使用forName(它們表示使用javaObjectEDT),但在這種情況下,它非常好用 – Zangdar