Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通用编程-跨语言兼容类_Java_C# - Fatal编程技术网

Java 通用编程-跨语言兼容类

Java 通用编程-跨语言兼容类,java,c#,Java,C#,我们可以用C语言创建一个类吗?它可以用在其他高级语言中,比如Java 更具体地说,我在c#中定义了一个函数。现在,我可以在其他语言(如Java)中使用相同的函数,而无需重新编写它,也无需对c#中的类进行引用或其他任何操作吗 这里的问题并不严格限于任何特定的语言?这里的问题是,我们能否用一种语言创建一个可以在另一种语言中使用的类。是的,您可以使用这样的构造。web服务是独立于语言的,或者您可以使用cmd命令调用(可执行程序) 我们是否可以在C#中创建一个可用于其他高级应用程序的类 像Java这样的

我们可以用C语言创建一个类吗?它可以用在其他高级语言中,比如Java

更具体地说,我在c#中定义了一个函数。现在,我可以在其他语言(如Java)中使用相同的函数,而无需重新编写它,也无需对c#中的类进行引用或其他任何操作吗


这里的问题并不严格限于任何特定的语言?这里的问题是,我们能否用一种语言创建一个可以在另一种语言中使用的类。

是的,您可以使用这样的构造。web服务是独立于语言的,或者您可以使用cmd命令调用(可执行程序)

我们是否可以在C#中创建一个可用于其他高级应用程序的类 像Java这样的语言

没有。作品:

我们可以用C语言创建一个类吗?它可以用在其他高级语言中,比如Java

我在c#中定义了一个函数。现在,我可以在其他语言(如Java)中使用相同的函数,而无需重新编写它吗

是的,可以做到

您可以使用该工具生成用于调用c#的Java代理类

Java和.NET之间的桥梁(进程内、fast、面向对象、开源)

这是他们在工具上必须说的:

使用反射,我们获取.NET和Java核心类的公共方法签名,并为另一方生成代理类

我们有.NET版本的JNIAPI

我们使用JNI将.NET代理的调用转发到真实Java对象上的方法。(解释)

我们使用JNI注册Java代理的本机方法的.NET实现,以转发对真实.NET对象上的方法的调用

源代码和二进制文件可用

但是等等,还有更多! 尽管不是必需的,但您可以使用jni4net从.NET调用Java

另见

    • 一般来说:

      正如一些答案所述:对于许多语言,都有一种调用编译后编译器输出的方法/功能的方法,但在我看来,唯一有用的方法是使用遗留软件或非语言独立的API(例如,不使用rest)。例如,为了向下兼容,或者因为它仅用于.NET,所以可以从Java程序调用legacy-C#-
      的方法。但是您必须意识到,没有通用的方法可以用于任何语言组合,在我看来,这不是使用
      /方法,而是调用它

      当涉及到绿地项目时,我会避免使用(许多)不同的语言(多语言编程)。可维护性受到严重影响,因为开发人员需要了解所有使用的语言,使用不同的IDE等。此外,调试也变得很痛苦

      在系统的不同部分使用同一种语言有一个巨大的优势,那就是能够使用某种独立开发/测试的共享库的类


      但是:如果出于某种原因您被迫使用不同的语言,我建议您尝试为每种语言重新创建两次所需的共享功能(我知道这很糟糕),并通过(反)序列化对象来传递对象。这样,您的项目就保持了可测试性和可调试性。

      这样做的好处是什么?换句话说:你为什么要这样做?在.NET之外的其他语言可能需要不同的方式来与C#类通信,比如P/Invoke到JNI/JNA。您可以为特定的进程创建类,但您应该知道如何从指定的语言(即Java)调用其中的方法。请更具体地说明“使用”的含义:编译/引用或其他。更新的可能副本已使所有答案无效below@MickyD请原谅我的错误,在投票前请仔细阅读我的答案。仅供参考编译程序或web api不是一个类仅仅因为你相信飞行的意大利面怪物或精灵,这并不取决于我飞行的意大利面怪物和精灵都是真实的,你不看吗#明白了吗?哈哈,当然知道。在今天的节目中有一些漂亮的喷火飞行怪物:)你不认为解决方案更像是调用另一个程序而不是单个类吗??我敢打赌,它将只在windows上运行,而不会在linux上运行,而java将会运行