我需要使用IKVM從C#運行JAR文件。 JAR包含一個構造函數將枚舉作爲其參數之一的類。我面臨的問題是,當我嘗試使用IKVM在C#中創建此類的實例時,會引發IllegalArgumentException。將枚舉值傳遞給C#的Java構造函數#
爪哇枚舉:
public class EventType{
public static final int General;
public static final int Other;
public static int wrap(int v);
}
的Java Class:
public class A{
private EventType eType;
public A(EventType e){
eType = e;
}
}
C#用途:
/* loader is the URLClassLoader for the JAR files */
java.lang.Class eArg = java.lang.Class.forName("A", true, loader);
/* Instantiate with the underlying value of EventType.General */
object obj = eArg.getConstructor(EventType).newInstance(0);
EARG正確由的forName(..)方法加載。但是,eArg類的實例化會引發IllegalArgumentException。除了exception.TargetSite.CustomAttributes之外,異常中沒有消息指定該方法未實現。我也嘗試將構造函數參數作爲java.lang.Field對象傳遞,但即使這樣也給出了相同的異常。
有沒有人有什麼建議我可能做錯了?
如何在C#代碼中定義EventType? –
public enum EventType {General,Other};包含此枚舉的DLL使用ikvmstub轉換爲JAR,然後導入到Java文件中。 – naveen