Principali modifiche:
- JChar è supportato come tipo restituito. Per compatibilità, JChar eredita da "str" e implementa una conversione implicita in "int". Pertanto, supera i controlli nei contratti. Ma ciò significa che non è più considerato un tipo numerico in Python e quindi isinstance(c, int) restituisce False, il che è coerente con le regole di conversione del tipo Java.
- È stato introdotto un operatore per eseguire il cast di un tipo Java, Type@obj (@ è un operatore Python per il prodotto interno; Java non ne ha uno).
- Aggiunta notazione per la creazione di array Java. Digitare[s1][s2][s3] per array di dimensioni fisse, Digitare[:][:][:] per array che verranno creati in seguito.
- @FunctionalInterface ti consente di creare funtori Java da oggetti Python con __call__.
- Rimosso JIterator deprecato, uso di JException come factory, get_default_jvm_path e jpype.reflect.
- Per impostazione predefinita, le stringhe Java non vengono convertite in stringhe Python.
- Python ha deprecato "__int__", quindi i cast impliciti tra tipi interi e a virgola mobile produrranno un TypeError.
- L'uso di JException è stato deprecato. Per rilevare tutte le eccezioni o verificare che un oggetto sia un tipo di eccezione Java, utilizzare java.lang.Throwable.
- Le cause a cascata delle eccezioni Java si riflettono ora negli stack frame Python.
- JString è stato deprecato. Per creare una stringa Java o per verificare che un oggetto sia di tipo stringa Java, utilizzare java.lang.String.
- I metodi repr sono stati aggiornati nelle classi Java.
- java.util.List esegue contratti percollections.abc.Sequence ecollections.abc.MutableSequence.
- java.util.Collection esegue il contratto percollections.abc.Collection.
- Le classi Java sono private e genereranno TypeError quando estese da Python.
- Maneggiare Control-C con attenzione. Le versioni precedenti si bloccano quando Java elabora un segnale Control-C perché termineranno Java durante la chiamata. JPype ora lancerà un'InterruptedException al ritorno da Java. Control-C non eliminerà grandi procedure Java come attualmente implementate, poiché Java non dispone di uno strumento speciale per questo.
Successivamente, è stata creata una versione correttiva 1.0.1, che ha aggiunto modifiche per risolvere i problemi con la versione Python 3.8.4. Python ha cambiato la logica relativa all'uso di "__setattr__" per "oggetto" e "tipo", impedendone l'utilizzo per modificare le classi derivate. Anche il controllo degli errori è stato delegato dal metodo "__setattr__", quindi i tipi di eccezione in alcuni controlli di adeguatezza dovrebbero essere aggiornati di conseguenza.
Fonte: opennet.ru