Interpreter

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
مترجم من الدرجة النهائية العامة

فئة السائق لتوجيه استدلال النموذج باستخدام TensorFlow Lite.

ملاحظة: إذا لم تكن بحاجة إلى الوصول إلى أي من ميزات API "التجريبية" أدناه ، تفضل استخدام InterpreterApi و InterpreterFactory بدلاً من استخدام المترجم الفوري.

يقوم Interpreter الفوري بتغليف نموذج TensorFlow Lite تم تدريبه مسبقًا ، حيث يتم تنفيذ العمليات لاستدلال النموذج.

على سبيل المثال ، إذا كان النموذج يأخذ مدخلاً واحدًا فقط ويعيد ناتجًا واحدًا فقط:

 try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
   interpreter.run(input, output);
 }

إذا كان النموذج يأخذ مدخلات أو مخرجات متعددة:

 Object[] inputs = {input0, input1, ...};
 Map<Integer, Object> map_of_indices_to_outputs = new HashMap<>();
 FloatBuffer ith_output = FloatBuffer.allocateDirect(3 * 2 * 4);  // Float tensor, shape 3x2x4.
 ith_output.order(ByteOrder.nativeOrder());
 map_of_indices_to_outputs.put(i, ith_output);
 try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(inputs, map_of_indices_to_outputs);
 }

إذا كان النموذج يأخذ أو ينتج موتر سلسلة:

 String[] input = {"foo", "bar"};  // Input tensor shape is [2].
 String[] output = new String[3][2];  // Output tensor shape is [3, 2].
 try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(input, output);
 }

يتم تحديد أوامر المدخلات والمخرجات عند تحويل نموذج TensorFlow إلى نموذج TensorFlowLite باستخدام Toco ، وكذلك الأشكال الافتراضية للمدخلات.

عندما يتم توفير المدخلات كمصفوفات (متعددة الأبعاد) ، سيتم تغيير حجم موتر (موتر) الإدخال المقابل بشكل ضمني وفقًا لشكل ذلك المصفوفة. عندما يتم توفير المدخلات Buffer ، لا يتم إجراء أي تغيير ضمني ؛ يجب أن يتأكد المتصل من أن حجم بايت Buffer يطابق حجم الموتر المقابل ، أو أنه يقوم أولاً بتغيير حجم الموتر عبر resizeInput(int, int[]) . يمكن الحصول على معلومات شكل ونوع الموتر من خلال فئة Tensor ، المتوفرة عبر getInputTensor(int) و getOutputTensor(int) .

تحذير: مثيلات Interpreter ليست آمنة مع مؤشر الترابط. يمتلك Interpreter الفوري الموارد التي يجب تحريرها صراحة من خلال استدعاء close()

تم إنشاء مكتبة TFLite مقابل NDK API 19. وقد تعمل مع مستويات واجهة برمجة تطبيقات Android التي تقل عن 19 ، ولكنها غير مضمونة.

فئات متداخلة

صف دراسي مترجم خيارات فئة خيارات للتحكم في سلوك مترجم وقت التشغيل.

المقاولون العامون

المترجم ( ملف نموذج الملف)
يهيئ Interpreter .
المترجم ( ملف نموذج الملف ، المترجم ، خيارات الخيارات)
يقوم بتهيئة Interpreter ويحدد الخيارات لتخصيص سلوك المترجم الفوري.
مترجم ( ByteBuffer byteBuffer)
يقوم بتهيئة Interpreter فوري باستخدام ByteBuffer لملف نموذج.
المترجم ( ByteBuffer byteBuffer، Interpreter.Options options)
يقوم بتهيئة Interpreter باستخدام ByteBuffer لملف نموذج ومجموعة من Interpreter.Options المخصصة.

الطرق العامة

فارغ
تخصيص
يقوم صراحة بتحديث التخصيصات لجميع الموترات ، إذا لزم الأمر.
فارغ
إغلاق ()
قم بتحرير الموارد المرتبطة بمثيل InterpreterApi .
int
getInputIndex ( سلسلة opName)
يحصل على فهرس للمدخلات مع إعطاء اسم المرجع للإدخال.
موتر
getInputTensor (int inputIndex)
يحصل على Tensor مرتبط بفهرس الإدخال المقدم.
int
getInputTensorCount ()
الحصول على عدد موترات الإدخال.
موتر
getInputTensorFromSignature (اسم إدخال السلسلة ، مفتاح توقيع السلسلة )
الحصول على Tensor المقترن باسم الإدخال المقدم واسم أسلوب التوقيع.
طويل
getLastNativeInferenceDurationNanoseconds ()
إرجاع توقيت الاستدلال الأصلي.
int
getOutputIndex ( سلسلة opName)
يحصل على فهرس ناتج معطى اسم المرجع الخاص بالمخرجات.
موتر
getOutputTensor (int outputIndex)
يحصل على Tensor مرتبط بفهرس الإخراج المقدم.
int
getOutputTensorCount ()
الحصول على عدد موتر الإخراج.
موتر
getOutputTensorFromSignature (اسم إخراج السلسلة ، مفتاح توقيع السلسلة )
يحصل على Tensor مرتبطًا باسم الإخراج المقدم بطريقة توقيع محددة.
سلسلة[]
getSignatureInputs ( String signatureKey)
الحصول على قائمة مدخلات SignatureDefs لمفتاح signatureKey الأسلوب.
سلسلة[]
getSignatureKeys ()
الحصول على قائمة بأسماء أساليب تصدير SignatureDef المتوفرة في النموذج.
سلسلة[]
getSignatureOutputs ( String signatureKey)
الحصول على قائمة مخرجات SignatureDefs لمفتاح signatureKey الأسلوب.
فارغ
resetVariableTensors ()
متقدم: يعيد تعيين كل الموترات المتغيرة إلى القيمة الافتراضية.
فارغ
resizeInput (int idx، int [] dims، boolean strict)
يغير حجم إدخال idx-th للنموذج الأصلي إلى التعتيم المحدد.
فارغ
resizeInput (int idx، int [] dims)
يغير حجم إدخال idx-th للنموذج الأصلي إلى التعتيم المحدد.
فارغ
تشغيل (إدخال الكائن ، إخراج الكائن )
لتشغيل استنتاج النموذج إذا كان النموذج يأخذ إدخالًا واحدًا فقط ، ويقدم ناتجًا واحدًا فقط.
فارغ
runForMultipleInputsOutputs ( كائن [] المدخلات ، خريطة < عدد صحيح ، كائن > المخرجات)
لتشغيل استدلال النموذج إذا كان النموذج يأخذ مدخلات متعددة ، أو يُرجع مخرجات متعددة.
فارغ
runSignature ( خريطة < سلسلة ، كائن > المدخلات ، خريطة < سلسلة ، كائن > المخرجات)
مثل runSignature(Map, Map, String) لكنه لا يتطلب تمرير مفتاح توقيع ، بافتراض أن النموذج يحتوي على SignatureDef واحد.
فارغ
runSignature ( خريطة < سلسلة ، كائن > المدخلات ، خريطة < سلسلة ، كائن > المخرجات ، مفتاح توقيع السلسلة )
يقوم بتشغيل نموذج الاستدلال بناءً على SignatureDef المقدم من خلال signatureKey .
فارغ
setCancelled (تم إلغاء منطقية)
متقدم: يقاطع الاستدلال في منتصف استدعاء run(Object, Object) .

الطرق الموروثة

المقاولون العامون

مترجم عام ( ملف نموذج الملف)

يهيئ Interpreter .

المعلمات
modelFile ملف نموذج TF Lite مدرب مسبقًا.
رميات
غير الشرعيين استثناء حجة إذا لم يقم modelFile بتشفير نموذج TensorFlow Lite صالح.

مترجم عام ( ملف نموذج الملف ، مترجم ، خيارات الخيارات)

يقوم بتهيئة Interpreter ويحدد الخيارات لتخصيص سلوك المترجم الفوري.

المعلمات
modelFile ملف نموذج TF Lite مدرب مسبقًا
والخيارات مجموعة من الخيارات لتخصيص سلوك المترجم الفوري
رميات
غير الشرعيين استثناء حجة إذا لم يقم modelFile بتشفير نموذج TensorFlow Lite صالح.

مترجم عام ( ByteBuffer byteBuffer)

يقوم بتهيئة Interpreter فوري باستخدام ByteBuffer لملف نموذج.

لا ينبغي تعديل ByteBuffer بعد إنشاء Interpreter فوري. يمكن أن يكون ByteBuffer إما MappedByteBuffer الذي يقوم الذاكرة بتعيين ملف نموذج ، أو ByteBuffer مباشر من nativeOrder () يحتوي على محتوى بايت للنموذج.

المعلمات
بايت بوفير
رميات
غير الشرعيين استثناء حجة إذا لم يكن byteBuffer عبارة عن MappedByteBuffer ولا ByteBuffer مباشرًا لـ originalOrder.

مترجم عام ( ByteBuffer byteBuffer، Interpreter.Options options)

يقوم بتهيئة Interpreter باستخدام ByteBuffer لملف نموذج ومجموعة من Interpreter.Options المخصصة.

لا ينبغي تعديل ByteBuffer بعد إنشاء Interpreter فوري. يمكن أن يكون ByteBuffer إما MappedByteBuffer الذي يقوم الذاكرة بتعيين ملف نموذج ، أو ByteBuffer مباشر من nativeOrder () يحتوي على محتوى بايت للنموذج.

المعلمات
بايت بوفير
والخيارات
رميات
غير الشرعيين استثناء حجة إذا لم يكن byteBuffer عبارة عن MappedByteBuffer ولا ByteBuffer مباشرًا لـ originalOrder.

الطرق العامة

تخصيص الفراغ العام

يقوم صراحة بتحديث التخصيصات لجميع الموترات ، إذا لزم الأمر.

سيؤدي هذا إلى نشر الأشكال وتخصيصات الذاكرة للموترات التابعة باستخدام شكل (أشكال) موتر الإدخال كما هو محدد.

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

 interpreter.resizeInput(0, new int[]{1, 4, 4, 3}));
 interpreter.allocateTensors();
 FloatBuffer input = FloatBuffer.allocate(interpreter.getInputTensor(0).numElements());
 // Populate inputs...
 FloatBuffer output = FloatBuffer.allocate(interpreter.getOutputTensor(0).numElements());
 interpreter.run(input, output)
 // Process outputs...

ملاحظة: تحتوي بعض الرسوم البيانية على مخرجات ذات شكل ديناميكي ، وفي هذه الحالة قد لا ينتشر شكل المخرجات بالكامل حتى يتم تنفيذ الاستدلال.

إغلاق الفراغ العام ()

قم بتحرير الموارد المرتبطة بمثيل InterpreterApi .

public int getInputIndex ( String opName)

يحصل على فهرس للمدخلات مع إعطاء اسم المرجع للإدخال.

المعلمات
الاسم

موتر عام getInputTensor (int inputIndex)

يحصل على Tensor مرتبط بفهرس الإدخال المقدم.

المعلمات
المدخلات

int العامة getInputTensorCount ()

الحصول على عدد موترات الإدخال.

Tensor العام getInputTensorFromSignature (اسم إدخال السلسلة ، مفتاح توقيع السلسلة )

الحصول على Tensor المقترن باسم الإدخال المقدم واسم أسلوب التوقيع.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المعلمات
اسم الإدخال أدخل الاسم في التوقيع.
التوقيع يمكن أن يكون مفتاح التوقيع الذي يحدد SignatureDef فارغًا إذا كان للنموذج توقيع واحد.
رميات
غير الشرعيين استثناء حجة إذا كان inputName أو signatureKey فارغًا أو فارغًا ، أو تم توفير اسم غير صالح.

عامة getLastNativeInferenceDurationNanoseconds طويل ()

إرجاع توقيت الاستدلال الأصلي.

getOutputIndex int العامة ( سلسلة opName)

يحصل على فهرس ناتج معطى اسم المرجع الخاص بالمخرجات.

المعلمات
الاسم

موتر عام getOutputTensor ( مؤشر إخراج int)

يحصل على Tensor مرتبط بفهرس الإخراج المقدم.

ملاحظة: تفاصيل موتر الإخراج (على سبيل المثال ، الشكل) قد لا يتم ملؤها بالكامل إلا بعد تنفيذ الاستدلال. إذا كنت بحاجة إلى تفاصيل محدثة * قبل * تشغيل الاستدلال (على سبيل المثال ، بعد تغيير حجم موتر الإدخال ، والذي قد يبطل أشكال موتر الإخراج) ، استخدم allocateTensors() لبدء التخصيص وانتشار الشكل بشكل صريح. لاحظ أنه بالنسبة للرسوم البيانية التي تحتوي على أشكال مخرجات تعتمد على قيم الإدخال * ، قد لا يتم تحديد شكل المخرجات بالكامل حتى تشغيل الاستدلال.

المعلمات
الإخراج

int العامة getOutputTensorCount ()

الحصول على عدد موتر الإخراج.

Tensor العام getOutputTensorFromSignature ( String outputName ، String signatureKey)

يحصل على Tensor مرتبطًا باسم الإخراج المقدم بطريقة توقيع محددة.

ملاحظة: تفاصيل موتر الإخراج (على سبيل المثال ، الشكل) قد لا يتم ملؤها بالكامل إلا بعد تنفيذ الاستدلال. إذا كنت بحاجة إلى تفاصيل محدثة * قبل * تشغيل الاستدلال (على سبيل المثال ، بعد تغيير حجم موتر الإدخال ، والذي قد يبطل أشكال موتر الإخراج) ، استخدم allocateTensors() لبدء التخصيص وانتشار الشكل بشكل صريح. لاحظ أنه بالنسبة للرسوم البيانية التي تحتوي على أشكال مخرجات تعتمد على قيم الإدخال * ، قد لا يتم تحديد شكل المخرجات بالكامل حتى تشغيل الاستدلال.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المعلمات
اسم الإخراج اسم الإخراج في التوقيع.
التوقيع يمكن أن يكون مفتاح التوقيع الذي يحدد SignatureDef فارغًا إذا كان للنموذج توقيع واحد.
رميات
غير الشرعيين استثناء حجة إذا كان outputName أو مفتاح signatureKey فارغًا أو فارغًا ، أو تم توفير اسم غير صالح.

سلسلة عامة [] getSignatureInputs ( String signatureKey)

الحصول على قائمة مدخلات SignatureDefs لمفتاح signatureKey الأسلوب.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المعلمات
التوقيع

سلسلة عامة [] getSignatureKeys ()

الحصول على قائمة بأسماء أساليب تصدير SignatureDef المتوفرة في النموذج.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

سلسلة عامة [] getSignatureOutputs ( String signatureKey)

الحصول على قائمة مخرجات SignatureDefs لمفتاح signatureKey الأسلوب.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المعلمات
التوقيع

إعادة تعيين الفراغ العام

متقدم: يعيد تعيين كل الموترات المتغيرة إلى القيمة الافتراضية.

إذا لم يكن للموتر المتغير مخزن مؤقت مرتبط به ، فسيتم إعادة تعيينه إلى الصفر.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

إدخال تغيير حجم الفراغ العام (int idx، int [] dims، boolean strict )

يغير حجم إدخال idx-th للنموذج الأصلي إلى التعتيم المحدد.

عندما تكون "صارمة" صحيحة ، يمكن فقط تغيير حجم الأبعاد غير المعروفة. يُشار إلى الأبعاد غير المعروفة كـ "-1" في المصفوفة التي يتم إرجاعها بواسطة `Tensor.shapeSignature ()`.

المعلمات
معرف
يخفت
حازم

إدخال تغيير حجم الفراغ العام (int idx، int [] dims )

يغير حجم إدخال idx-th للنموذج الأصلي إلى التعتيم المحدد.

المعلمات
معرف
يخفت

تشغيل باطل عام (إدخال كائن ، إخراج كائن )

لتشغيل استنتاج النموذج إذا كان النموذج يأخذ إدخالًا واحدًا فقط ، ويقدم ناتجًا واحدًا فقط.

تحذير: تكون واجهة برمجة التطبيقات أكثر كفاءة إذا تم استخدام Buffer (يفضل أن يكون مباشرًا ، ولكن ليس مطلوبًا) كنوع بيانات الإدخال / الإخراج. يرجى التفكير في استخدام Buffer لتغذية البيانات الأولية وجلبها للحصول على أداء أفضل. يتم دعم أنواع Buffer الخرسانية التالية:

  • ByteBuffer - متوافق مع أي نوع Tensor أساسي أساسي.
  • FloatBuffer - متوافق مع موتر عائم.
  • IntBuffer - متوافق مع Tensors int32.
  • LongBuffer - متوافق مع Tensors int64.
لاحظ أن الأنواع المنطقية مدعومة فقط Buffer ، وليس كمخازن مؤقتة ، أو كمدخلات عددية.

المعلمات
الإدخال مصفوفة أو مصفوفة متعددة الأبعاد ، أو Buffer للأنواع الأولية بما في ذلك int ، و float ، و long ، و byte. Buffer هو الطريقة المفضلة لتمرير بيانات الإدخال الكبيرة للأنواع الأولية ، بينما تتطلب أنواع السلسلة استخدام مسار إدخال الصفيف (متعدد الأبعاد). عند استخدام Buffer ، يجب أن يظل محتواه دون تغيير حتى يتم استدلال النموذج ، ويجب على المتصل التأكد من أن Buffer في موضع القراءة المناسب. لا يُسمح بقيمة null إلا إذا كان المتصل يستخدم Delegate يسمح بتداخل التعامل مع المخزن المؤقت ، وقد تم ربط هذا المخزن المؤقت بمدخل Tensor .
انتاج مصفوفة متعددة الأبعاد لبيانات الإخراج ، أو Buffer للأنواع الأولية بما في ذلك int و float و long و byte. عند استخدام Buffer ، يجب على المتصل التأكد من تعيين موضع الكتابة المناسب. يُسمح باستخدام قيمة فارغة ، وهي مفيدة في حالات معينة ، على سبيل المثال ، إذا كان المتصل يستخدم Delegate يسمح بالتداخل بين مقبض المخزن المؤقت ، وكان هذا المخزن المؤقت مرتبطًا بإخراج Tensor (انظر أيضًا Interpreter.Options # setAllowBufferHandleOutput (منطقي) ) ، أو إذا كان الرسم البياني قد شكل مخرجات ديناميكيًا ويجب على المتصل الاستعلام عن شكل Tensor الناتج بعد استدعاء الاستدلال ، وجلب البيانات مباشرة من موتر الإخراج (عبر Tensor.asReadOnlyBuffer() ).

public void runForMultipleInputsOutputs ( Object [] inputs، Map < Integer ، Object > outputs)

لتشغيل استدلال النموذج إذا كان النموذج يأخذ مدخلات متعددة ، أو يُرجع مخرجات متعددة.

تحذير: تكون واجهة برمجة التطبيقات أكثر كفاءة إذا تم استخدام Buffer (يفضل أن يكون مباشرًا ، ولكن ليس مطلوبًا) كأنواع بيانات الإدخال / الإخراج. يرجى التفكير في استخدام Buffer لتغذية البيانات الأولية وجلبها للحصول على أداء أفضل. يتم دعم أنواع Buffer الخرسانية التالية:

  • ByteBuffer - متوافق مع أي نوع Tensor أساسي أساسي.
  • FloatBuffer - متوافق مع موتر عائم.
  • IntBuffer - متوافق مع Tensors int32.
  • LongBuffer - متوافق مع Tensors int64.
لاحظ أن الأنواع المنطقية مدعومة فقط Buffer ، وليس كمخازن مؤقتة ، أو كمدخلات عددية.

ملاحظة: لا يُسمح بالقيم null للعناصر غير الصالحة inputs outputs إلا إذا كان المتصل يستخدم Delegate يتيح إمكانية التشغيل المتداخل لمخزن التخزين المؤقت ، وكان هذا المخزن المؤقت مرتبطًا بالإدخال أو الإخراج المقابل Tensor (s).

المعلمات
المدخلات مجموعة من البيانات المدخلة. يجب أن تكون المدخلات بنفس ترتيب مدخلات النموذج. يمكن أن يكون كل إدخال عبارة عن مصفوفة أو مصفوفة متعددة الأبعاد ، أو Buffer للأنواع الأولية بما في ذلك int ، و float ، و long ، و byte. Buffer هو الطريقة المفضلة لتمرير بيانات الإدخال الكبيرة ، بينما تتطلب أنواع السلاسل استخدام مسار إدخال الصفيف (متعدد الأبعاد). عند استخدام Buffer ، يجب أن يظل محتواه دون تغيير حتى يتم استدلال النموذج ، ويجب على المتصل التأكد من أن Buffer في موضع القراءة المناسب.
النواتج تعيين مؤشرات الإخراج إلى المصفوفات متعددة الأبعاد لبيانات الإخراج أو Buffer للأنواع البدائية بما في ذلك int ، و float ، و long ، و byte. يحتاج فقط إلى الاحتفاظ بإدخالات للمخرجات لاستخدامها. عند استخدام Buffer ، يجب على المتصل التأكد من تعيين موضع الكتابة المناسب. قد تكون الخريطة فارغة للحالات التي يتم فيها استخدام مقابض المخزن المؤقت لبيانات موتر الإخراج ، أو الحالات التي يتم فيها تشكيل المخرجات ديناميكيًا ويجب على المتصل الاستعلام عن شكل Tensor الناتج بعد استدعاء الاستدلال ، وجلب البيانات مباشرة من موتر الإخراج ( عبر Tensor.asReadOnlyBuffer() ).

توقيع عام باطل عام ( خريطة < سلسلة ، كائن > المدخلات ، خريطة < سلسلة ، كائن > مخرجات)

مثل runSignature(Map, Map, String) لكنه لا يتطلب تمرير مفتاح توقيع ، بافتراض أن النموذج يحتوي على SignatureDef واحد. إذا كان النموذج يحتوي على أكثر من SignatureDef ، فسيتم طرح استثناء.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المعلمات
المدخلات
النواتج

تشغيل توقيع عام باطل ( خريطة < سلسلة ، كائن > مدخلات ، خريطة < سلسلة ، كائن > مخرجات ، مفتاح توقيع سلسلة )

يقوم بتشغيل نموذج الاستدلال بناءً على SignatureDef المقدم من خلال signatureKey .

راجع run(Object, Object) لمزيد من التفاصيل حول أنواع بيانات الإدخال والإخراج المسموح بها.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المعلمات
المدخلات خريطة من اسم الإدخال في SignatureDef إلى كائن إدخال.
النواتج خريطة من اسم الإخراج في SignatureDef لإخراج البيانات. قد يكون هذا فارغًا إذا رغب المتصل في الاستعلام عن بيانات Tensor مباشرة بعد الاستدلال (على سبيل المثال ، إذا كان شكل الإخراج ديناميكيًا ، أو تم استخدام مقابض المخزن المؤقت للإخراج).
التوقيع مفتاح التوقيع الذي يحدد SignatureDef.
رميات
غير الشرعيين استثناء حجة إذا كانت inputs فارغة أو فارغة ، أو إذا كانت outputs أو مفتاح signatureKey فارغًا ، أو إذا حدث خطأ عند تشغيل الاستدلال.

مجموعة الفراغ العام تم إلغاؤها (تم إلغاء منطقية)

متقدم: يقاطع الاستدلال في منتصف استدعاء run(Object, Object) .

سيتم تعيين علامة الإلغاء على صواب عند استدعاء هذه الوظيفة. سيتحقق المترجم من العلم بين استدعاءات المرجع ، وإذا كان هذا true ، فسيتوقف المترجم عن التنفيذ. سيبقى المترجم الفوري في حالة الإلغاء حتى "غير مُلغى" بشكل صريح بواسطة setCancelled(false) .

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المعلمات
ألغيت true لإلغاء الاستدلال بأفضل طريقة ممكنة ؛ استئناف false .
رميات
استثناء الدولة غير القانوني إذا لم تتم تهيئة المترجم الفوري باستخدام الخيار القابل للإلغاء ، والذي يتم إيقاف تشغيله افتراضيًا.