【问题标题】:java.lang.String cannot be cast to system.Objectjava.lang.String 不能转换为 system.Object
【发布时间】:2015-01-19 08:42:35
【问题描述】:

我使用 JNI4NET 框架从 Java 调用 .Net 代码。 JNI4NET 为 .Net 代码生成了代理类。其中一种方法接受 system.Object 作为输入参数。

我想发送字符串值作为该方法的输入。我为此编写了以下代码-

        String s = "test";
        Object b = s;
        system.Object object = (system.Object) b;

并将这个 obj 作为输入传递给代理方法。上面的代码抛出运行时异常 java.lang.String cannot be cast to system.Object。任何帮助或指针都会很有用。

【问题讨论】:

  • system.Object 到底是什么?
  • .Net 使用 system.Object 与 Java 中的 java.lang.Object 相比。

标签: java string classcastexception jni4net


【解决方案1】:

java.lang.String 可以转换为 java.lang.Object(尽管没有理由转换它 - 您可以像在 Object b = s; 中一样将它简单地分配给 Object 引用),而不是 system.Object

我做了一些搜索。看起来这可能会有所帮助:

String s = "test";
system.String b = new system.String(s);
system.Object object = b;

由于system.Stringsystem.Object 的子类,您可以将它传递给您的test 方法。

【讨论】:

  • 感谢 Eran 的快速回复。在这种情况下,如何将 String 值传递给 system.Object 参数?
  • @Sanjay system.Object 是什么?这是您创建的课程吗?它有哪些构造函数?
  • 它是由 Java 中的 JNI4NET 框架创建的 .Net 等效方法。下面是语法 - public native boolean test(java.lang.String AVariableFullName, system.Object Value);
  • 不应该是system.String b = new system.String(s);吗?
  • @Sanjay 运行代码时,您的库路径中可能缺少一些 jar。
猜你喜欢
  • 2018-02-10
  • 2015-05-18
  • 2011-10-27
  • 2019-10-19
  • 2018-01-23
  • 2011-05-09
  • 2014-06-24
  • 1970-01-01
  • 2013-08-27
相关资源
最近更新 更多