جافا Hashmap ومتعددة الأبعاد نوع علامة مجموعة في JSNI؟

StackOverflow https://stackoverflow.com/questions/311883

  •  10-07-2019
  •  | 
  •  

سؤال

ولقد حصلت على JSNI أسلوب الذي يستدعي أسلوب جافا التي تأخذ Hasmap كإدخال. لقد حاولت

handler.@com.mypackage::myMethod(Ljava/util/Hashmap;)(myHashMap);
handler.@com.mypackage::myMethod(Ljava/util/Hashmap<Ljava/lang/String,Ljava/lang/String>;)(myHashMap);

وأنا لا يمكن أن يبدو لتحديد نوع التوقيع الصحيح لتشمل سلاسل أو العثور حتى لو سمح لهذا الاستخدام.

وبما أنني أفعل هذا في منسوب المياه الجوفية أنا على الرغم من أنه قد يكون تنفيذ hashmap والنهج البديل لقد الرغم من يأخذ سلسلة [] [] مجموعة كمدخل

وكنت أمل somwthing مثل

ومعالج @ com.mypackage :: myMethod ([[Ljava / انج / سلسلة؛). (myArray)؛

ولكن، أنا ضربت قضية أخرى للعثور على sntax JNSI الصحيح لأبعاد 2ND من مجموعة

وبعد مجموعة واحدة أي. [Ljava/lang/String; على ما يرام ولكن أنا في حاجة إلى البعد 2ND.

وأي مساعدة / أفكار أو وصلات إلى وثيقة jnsi حسن تقدير.

هل كانت مفيدة؟

المحلول

ويمكنك بعد الخطأ الذي الحصول على الخاص بك، وأيضا أي نوع من جافا سكريبت يعترض محاولة لتمرير باعتباره hashmap. أفترض أنك تحصل على خطأ وقت الترجمة؟

وهنا هو بداية جيدة للتوثيق JSNI:

<وأ href = "http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideJavaFromJavaScript" يختلط = "نوفولو noreferrer"> GWT JSNI ثيقة

GWT مدونة آخر على JSNI

نصائح أخرى

وأعتقد أنك تقوم بتشغيل إلى نوع المحو. كل معلمة كائن العامة هو في الحقيقة مجرد java.lang.Object في وقت التشغيل. لا أعتقد أن تتعرض الأدوية إلى JNI.

ولقد كتبت JNI كود لكن أبدا محاولة لاستخدام الأنواع العامة من التعليمات البرمجية الأصلية لذلك لست على يقين. تحولت غوغلينغ يصل أي إشارة أو أمثلة محددة.

جافا VM نوع للحصول على إشارة إلى التوقيعات النوع الذي يستخدم في JNI (وJSNI)

ولكن، قد لا تحتاج إلى تمرير HashMap جافا سكريبت لأي حال. بدلا من ذلك، النظر في استخدام JSONObject وتمرير كائن جافا سكريبت الأصلي إلى شفرة جافا سكريبت. يبدو مثل هذا:

  public void callFoo() {
    JSONObject obj = new JSONObject();
    obj.put("propertyName", new JSONString("properyValue"));
    JavaScriptObject jsObj = obj.getJavaScriptObject();

    nativeFoo(jsObj);
  }

  public native void nativeFoo(JavaScriptObject obj) /*-{
    $wnd.alert(obj['propertyName']);
  }-*/;

وهذا يحصل جمعت إلى ما يقرب من:

var obj = {'propertyName': 'propertyValue'};
$wnd.alert(obj['propertyName']);

وطيب، وبعد النظر في ذلك ...

وكنت غير قادر على العثور على أي وثائق أو الترتيب الذي يعطي مجموعة متعددة الأبعاد من السلاسل. تمكن من تحقيق هذا باستخدام HashMap، وذلك باستخدام:

handler.@com.mypackage::myMethod(Ljava/util/Hashmap;)(myHashMap);

وعملت لو كنت تحديد المدخلات دون تحديد أنواع. مثل:

HashMap myHashMap = new HashMap();

وهذا يعطي JSNI على HashMap من نوع <Object, Object>.

وأنا بعد ذلك التعامل مع الكائن على الجانب الآخر من قبل الصب محتويات hashmap إلى سلاسل.

وبفضل صدئ للروابط:

<وأ href = "http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideJavaFromJavaScript" يختلط = "noreferrer نوفولو"> GWT JSNI ثيقة - هذا أمر جيد للحصول على التنسيق الصحيح من الأوليات

GWT مدونة آخر على JSNI - لم ير هذا بلوق قبل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top