PHP Сортировать массив по полю? [Дубликат]

Я также обнаружил, что при использовании JNI, вызывая метод Java из C ++, если вы передадите параметры вызываемому Java-методу в неправильном порядке, вы получите эту ошибку при попытке использовать параметры внутри вызываемого метода (потому что они не будут подходящим типом). Сначала я был ошеломлен тем, что JNI не проверяет вас как часть проверки подписи класса при вызове метода, но я полагаю, что они не делают такого рода проверку, потому что вы можете передавать полиморфные параметры, и они должны предположим, что вы знаете, что делаете.

Пример C ++ Код JNI:

void invokeFooDoSomething() {
    jobject javaFred = FredFactory::getFred(); // Get a Fred jobject
    jobject javaFoo = FooFactory::getFoo(); // Get a Foo jobject
    jobject javaBar = FooFactory::getBar(); // Get a Bar jobject
    jmethodID methodID = getDoSomethingMethodId() // Get the JNI Method ID


    jniEnv->CallVoidMethod(javaFoo,
                           methodID,
                           javaFred, // Woops!  I switched the Fred and Bar parameters!
                           javaBar);

    // << Insert error handling code here to discover the JNI Exception >>
    //  ... This is where the IncompatibleClassChangeError will show up.
}

Пример кода Java:

class Bar { ... }

class Fred {
    public int size() { ... }
} 

class Foo {
    public void doSomething(Fred aFred, Bar anotherObject) {
        if (name.size() > 0) { // Will throw a cryptic java.lang.IncompatibleClassChangeError
            // Do some stuff...
        }
    }
}
34
задан Community 23 May 2017 в 12:17
поделиться