objectarraylibrary.cpp

来自「< Professional Java,JDK 5 Edition>」· C++ 代码 · 共 56 行

CPP
56
字号
// ObjectArrayLibrary.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "..\ObjectArrayExample.h"

JNIEXPORT jint JNICALL Java_ObjectArrayExample_findString
  (JNIEnv *env, jobject obj, jobjectArray strList, jstring strToFind)
{
    const char *findStr;
    jint i;
    int arrayLen;

    arrayLen = env->GetArrayLength(strList);
    findStr = env->GetStringUTFChars(strToFind, NULL);

    if(findStr == NULL) {
        return(-1);
    }

    for(i=0; i<arrayLen; i++) {
        jstring strElem = (jstring)env->GetObjectArrayElement(strList, i);

        if(strElem != NULL) {
            const char *strTemp = env->GetStringUTFChars(strElem, NULL);

            if(strcmp(strTemp, findStr) == 0) {
                env->ReleaseStringUTFChars(strElem, strTemp);
                env->ReleaseStringUTFChars(strToFind, findStr);
                env->DeleteLocalRef(strElem);
                break;
            }

            env->ReleaseStringUTFChars(strElem, strTemp);
            env->DeleteLocalRef(strElem);
        }

        env->ReleaseStringUTFChars(strToFind, findStr);
    }

    if(i == arrayLen) {
        return(-1);
    } else {
        return(i);
    }
}

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    return TRUE;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?