Hlavní změny:
- JChar je podporován jako návratový typ. Kvůli kompatibilitě JChar dědí z "str" a implementuje implicitní konverzi na "int". Proto prochází kontrolami ve smlouvách. To však znamená, že již není v Pythonu považován za číselný typ, a proto se isinstance(c, int) vyhodnotí jako False, což je v souladu s pravidly pro převod typu Java.
- Byl zaveden operátor pro přetypování typu Java Type@obj (@ je operátor Pythonu pro vnitřní produkt; Java žádný nemá).
- Přidán zápis pro vytváření polí Java. Type[s1][s2][s3] pro pole s pevnou velikostí, Type[:][:][:] pro pole, která budou vytvořena později.
- @FunctionalInterface vám umožňuje vytvářet funktory Java z objektů Pythonu pomocí __call__.
- Odstraněn zastaralý JIterator, použití JException jako továrny, get_default_jvm_path a jpype.reflect.
- Ve výchozím nastavení se řetězce Java nepřevádějí na řetězce Python.
- Python zavrhl "__int__", takže implicitní přetypování mezi typy typu integer a floating-point vytvoří TypeError.
- Použití JException bylo zastaralé. Chcete-li zachytit všechny výjimky nebo zkontrolovat, zda je objekt typu výjimky Java, použijte java.lang.Throwable.
- Kaskádové příčiny výjimek jazyka Java se nyní odrážejí v rámcích zásobníku Pythonu.
- JString byl zastaralý. Chcete-li vytvořit řetězec Java nebo zkontrolovat, zda je objekt typu Java string, použijte java.lang.String.
- Metody Repr byly aktualizovány ve třídách Java.
- java.util.List provádí kontrakty pro collections.abc.Sequence a collections.abc.MutableSequence.
- java.util.Collection provede smlouvu pro collections.abc.Collection.
- Třídy Java jsou soukromé a při rozšíření z Pythonu vyvolají TypeError.
- S Control-C zacházejte opatrně. Předchozí verze havarují, když Java zpracuje signál Control-C, protože během volání ukončí Java. JPype nyní při návratu z Javy vyvolá InterruptedException. Control-C nebude vyhazovat velké Java procedury, jak jsou v současnosti implementovány, protože Java pro to nemá speciální nástroj.
Dále bylo vytvořeno opravné vydání 1.0.1, které přidalo změny k vyřešení problémů s vydáním Pythonu 3.8.4. Python změnil logiku týkající se použití „__setattr__“ pro „objekt“ a „typ“, čímž zabránil jeho použití k úpravě odvozených tříd. Kontrola chyb byla také delegována z metody "__setattr__", takže typy výjimek v některých kontrolách přiměřenosti by měly být odpovídajícím způsobem aktualizovány.
Zdroj: opennet.ru