جزء من المشكلة هو أن JavaMetaClass. يفترض new أنه سيتم استدعاؤه دائمًا لإنشاء وكيل ، عندما يتم استدعاؤه لكل فئة فرعية. على نفس السطر ، يجب أن يقتصر التعامل مع jclass_registry على الوكلاء الفعليين. شيء آخر وجدته هو أن معالجة الكائنات التي يتم إرجاعها من Java متراخية ، مما يجعل من المستحيل إعادتها إلى طرق Java.
يمكنني العمل على بعض هذه القضايا في الوقت المناسب.
يعجبني كثيرًا مدى سرعة jnius في تحميل Java ، والقدرة على استخدام أحدث إصدارات Python.
تريد أن تدعم هذه القضية؟ أضف مكافأة على ذلك! نحن نقبل المنح عبر Bountysource .
نأسف للتأخير ، هل يمكنك تقديم وصف أكثر تحديدًا (حالات اختبار؟) لكل من هذه المشكلات؟ لقد بدأت بعض الأعمال للسماح بوراثة فئات جافا من بيثون (باستخدام الوكلاء) ، لكنها ليست كاملة ، ومع ذلك ، فإن المشكلات التي تشير إليها هنا تبدو غير مرتبطة بذلك ، وربما ينبغي تقسيمها إلى عدة قضايا مختلفة.
آسف للدخول في المناقشة ، ولكن قد لا تكون وراثة فصل دراسي في Java هو ما تحتاجه @ Abalala ، أعتقد أنه من الأفضل لف فئة Java في فصل دراسي بايثون كما هو الحال في هذا الفصل . قد لا يكون واضحًا في الكود المرتبط لأن كل فئة autoclass تتم في java.py لكن الكود يعادل
class MyJavaWrapperClass(AnyPythonClassOrMixin):
def __init__(self, *args, **kwargs):
JavaClass = autoclass('org.uber.cool.JavaClass`)
self._my_java_object = JavaClass(*args, **kwargs) # use double underscore to "hide" the Java object
أسباب عدم وراثة فئة Java هي:
class Element
، class Node
و class Relationship
في الرسم البياني ، كلها تقريبًا تحتوي على كود معياري حتى لو كان معظم الوقت هو جعل API أكثر Pythonic ؛)من منظور الأداء ، لا أعتقد أن هناك أي تأثير ولكن tshirtman قد يعرف بشكل أفضل.
شيء آخر ، التفاف كائنات Java يعمل بشكل جيد الآن :-)
هل يمكن تجاوز طريقة جافا باستخدام كود بايثون في الوقت الحالي؟
ماذا عن وراثة فئة جافا؟
لقد أمضيت وقتًا طويلاً في البحث في هذا الأمر ، وتوصلت إلى استنتاج مفاده أنه لا توجد طريقة عملية للقيام بذلك ، باستثناء إنشاء كود java bytecode في وقت التشغيل ، هناك مكتبات للقيام بذلك ، ولكن هذا يبدو وكأنه إضافة الكثير من التعقيدات للمكتبة ، وربما خارج النطاق. لست متأكدًا من الإغلاق ، لكنني لا أعتقد أنه سيتم العمل عليه ، لذلك لن يكون من غير المعقول تحديده على أنه wontfix.
@ monami7001 أي تقدم؟
كان ذلك قبل 4 سنوات تقريبًا ، وعلى حد علمي لا ، لا يزال إنشاء كود java bytecode في وقت التشغيل هو الخيار الوحيد (وربما ليس سيئًا كما كنت على الرغم من ذلك وعلينا النظر في ذلك).
أحد الحلول هو:
لاستخدامه مع autoclass