java - c++中的运算符重载可以用在java中吗

标签 java android c++ android-ndk operator-overloading

好的,所以我写了一些代码,这些代码需要操作重载以使语法具有良好的可读性。现在我正在使用 Java 编写程序。但是我虽然嘿 c++ 得到了操作重载并且 android 支持 Java 和 c++ 编程,所以也许我可以创建我需要的类在 c++ 中进行操作重载并在 Java 代码中使用。我想知道这是否可行,或者 Java 中对操作重载的限制会阻止我这样做吗?

最佳答案

是的,但不是您所期望的那样。你会使用 JNI调用可能内部使用运算符重载的 NDK 函数。但是,您从 native 方法中进行的任何 Java 调用都将调用一个 C++ 函数,该函数的特定名称与声明的 native 函数的类和名称相对应。

例如,下面的 Java 声明:

package com.foo;
class Obj {
    int i;
    native void doCalc();
}

将匹配以下 C++ 声明:

JNIEXPORT void JNICALL 
Java_com_foo_Obj_doCalc(JNIEnv * env, jobject  obj)
{}

这显然不是运算符重载。该函数本身可以在其执行中使用重载运算符。

关于java - c++中的运算符重载可以用在java中吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21739266/

相关文章:

java - 理解类的映射字段上的最终静态使用

android - 网络代理/android-gpuimage : How to implement parallel filter pipeline?

c++ - C++ 中的 vector 、代理类和点运算符

c++ - g++编译错误.h文件

java - 在全屏应用程序中生成 JOptionPane 会显示任务栏

java - 用于设计可扩展 Web 服务的模式

android - 如何将 registerForActivityResult 与 androidx.fragment.app.Fragment 一起使用?

java - Google 日历 java.lang.NoClassDefFoundError

c++ - 使用 mingw 将静态库 (.a) 链接到 exe

java - FFmpeg libx264 许可证