可以在java中使用在c ++中完成的运算符重载

时间:2014-02-12 20:50:05

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

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

1 个答案:

答案 0 :(得分:3)

是的,但不是你想象的方式。您可以使用JNI调用NDK函数,这些函数可能内部使用运算符重载。但是,从本机方法调用的任何Java调用都将调用C ++函数,该函数具有与声明的本机函数的类和名称对应的特定名称。

例如,以下Java声明:

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

将匹配以下C ++声明:

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

显然不是操作员超载。该函数本身可以在执行时使用重载运算符。