Vigtigste ændringer:
- JChar understøttes som en returtype. For kompatibilitet arver JChar fra "str" og implementerer en implicit konvertering til "int". Derfor passerer den kontrol i kontrakter. Men det betyder, at det ikke længere betragtes som en numerisk type i Python, og at isinstance(c, int) derfor evalueres til False, hvilket er i overensstemmelse med Java-typekonverteringsregler.
- En operator er blevet introduceret til at caste en Java-type, Type@obj (@ er en Python-operator for indre produkt; Java har ikke en).
- Tilføjet notation til oprettelse af Java-arrays. Type[s1][s2][s3] for arrays med fast størrelse, Type[:][:][:] for arrays, der vil blive oprettet senere.
- @FunctionalInterface giver dig mulighed for at oprette Java-funktioner fra Python-objekter med __call__.
- Fjernede forældet JIterator, brug af JException som fabrik, get_default_jvm_path og jpype.reflect.
- Som standard konverteres Java-strenge ikke til Python-strenge.
- Python har forældet "__int__", så implicitte casts mellem heltals- og flydende kommatyper vil producere en TypeError.
- Brugen af JException er blevet forældet. For at fange alle undtagelser eller kontrollere, at et objekt er en Java-undtagelsestype, skal du bruge java.lang.Throwable.
- Kaskadende årsager til Java-undtagelser afspejles nu i Python-stackrammer.
- JString er blevet udfaset. For at oprette en Java-streng, eller for at kontrollere, at et objekt er af typen Java-streng, skal du bruge java.lang.String.
- Repr-metoder er blevet opdateret i Java-klasser.
- java.util.List udfører kontrakter for collections.abc.Sequence og collections.abc.MutableSequence.
- java.util.Collection udfører kontrakten for collections.abc.Collection.
- Java-klasser er private og vil kaste TypeError, når de udvides fra Python.
- Håndter Control-C forsigtigt. Tidligere versioner går ned, når Java behandler et Control-C-signal, fordi de vil afslutte Java under opkaldet. JPype vil nu kaste en InterruptedException, når han vender tilbage fra Java. Control-C vil ikke smide store Java-procedurer ud som i øjeblikket implementeret, da Java ikke har et specielt værktøj til dette.
Dernæst blev der oprettet en korrigerende udgivelse 1.0.1, som tilføjede ændringer for at løse problemer med Python 3.8.4-udgivelsen. Python har ændret logikken vedrørende brugen af "__setattr__" for "objekt" og "type", hvilket forhindrer det i at blive brugt til at ændre afledte klasser. Fejlkontrol er også blevet delegeret fra "__setattr__" metoden, så undtagelsestyperne i nogle tilstrækkelighedskontroller bør opdateres i overensstemmelse hermed.
Kilde: opennet.ru