Pyjnius: рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐рдпрд╛рдБ 1.2.1 . рдореЗрдВ рдкрд╣реБрдБрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 13 рджрд┐рд╕ре░ 2019  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: kivy/pyjnius

arraylist = autoclass("java.util.ArrayList")()
arraylist.iterator()
arraylist.stream()

рдпрд╣ 1.2.0 рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди 1.2.1 рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

AttributeError                            Traceback (most recent call last)
<ipython-input-7-5e67e1c90388> in <module>()
----> 1 arraylist.stream()

AttributeError: 'java.util.ArrayList' object has no attribute 'stream'

https://colab.research.google.com/drive/1F9u2jVQR5JFw_mk5Bq--VH1Ki91Xe5x3 рдкрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдиреЛрдЯрдмреБрдХ

рд╕реНрдЯреНрд░реАрдо () рдХреЛ рд╕реБрдкрд░-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рдореЗрдВ java.util.List рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдореЗрдВ рднреА рд╕рдорд╕реНрдпрд╛ рдереАред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ, рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐рдпрд╛рдВ 1.2.1 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕рдмрдХреБрдЫ 1.2.0 рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рдлреА рдЦрд░рд╛рдм рдмрдЧ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ 1.2.1 рд░рд┐рд▓реАрдЬ рдХреЛ рд╣рдЯрд╛рдиреЗ рдпрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕реЗ рдЕрдиреБрдкрдпреЛрдЧреА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ?

рд╕рднреА 20 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕реАрдЖрдИ рдореЗрдВ рднреА рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╕рдордп рд╣реЛрдЧрд╛ рддреЛ рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛ред

рд╕реАрдЖрдИ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ 1.2.1 рдореЗрдВ рдХреИрд╕реЗ рддреЛрдбрд╝рд╛ред рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ getDeclaredMethods() рдореЗрдВ рд╡реЗ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВред (рд╡реЗ рдХрдХреНрд╖рд╛ рдпрд╛ рдЙрд╕рдХреЗ рд╕реБрдкрд░рдЯреЗрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ)ред

https://blog.jooq.org/2018/03/28/correct-reflective-access-to-interface-default-methods-in-java-8-9-10/ рдореЗрдВ рдХреБрдЫ рдЪрд░реНрдЪрд╛ рд╣реИ - рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪрддрд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред

рдХреНрдпрд╛ рд╕рдорд╛рдзрд╛рди рднреА рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдЙрдирдХреЗ рдореВрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реАрдХреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реИ? (рд╣рдо рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдареЛрд╕ рд╡рд╕реНрддреБ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ stackoverflow рдзрд╛рдЧрд╛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ: https://stackoverflow.com/questions/28400408/what-is-the-new-way-of-getting-all-methods-of-a-class-including-inherited- defau

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдЬреЗрд╡реАрдПрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреБрдЫ рдЕрдВрддрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ...

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ рдкрд╣рд▓реЗ java.util.Collection рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ...: /

рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ getMethods рдХреЗ рдмрдЬрд╛рдп getDeclaredMethods рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдореИрдВрдиреЗ рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдЪрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ getInterfaces() рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рдерд╛ ...

рдПрдЪрдПрдо, рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ ... рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВред
https://github.com/kivy/pyjnius/pull/466/files#diff -06f2b31838f083623d82353f734d644a

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЙрд╣, рдПрдХ segfault рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬреЗрдВтАж https://github.com/kivy/pyjnius/runs/348651345
рдЕрдЧрд░ рдпрд╣ рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рдерд╛, рддреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, ubuntu, python3.8, java 10 рдкрд░ рдлрд┐рд░ рд╕реЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛ ...
рд╕рдВрдкрд╛рджрд┐рдд 2: рдмрд╣реБрдд рдЙрд▓рдЭрди рдореЗрдВ, рд╕рднреА рдореМрдЬреВрджрд╛ рд╕рдВрдпреЛрдЬрди рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрдм рдореИрдВрдиреЗ 3.8/рдЬрд╛рд╡рд╛ 10/рдЙрдмрдВрдЯреВ рдХреЛ рдПрдХ рд╕рд╛рде рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдлрд┐рд░ рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ 9 рдФрд░ 11 рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛, рдФрд░ 3.7/11/рдЙрдмрдВрдЯреВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рджреБрд░реНрдШрдЯрдирд╛ рд╣реБрдИ ... рдареАрдХ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдореИрдВ openjdk-11-jdk рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдореЗрд░реЗ ubuntu рдкрд░ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ python3.7 рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ тАжтАж рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЧреНрд░рдореНрдмрд▓

https://dev.azure.com/conda-forge/feedstock-builds/_build/results?buildId=100815&view=logs&j=696704cc-6fef-57a3-ea36-f27779b8cd5e&t=06421391-4b55-523d-a804-5e1a5bfc1908
рд╕рдВрдпреЛрдЧ рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХреЛрдВрдбрд╛-рдлреЛрд░реНрдЬ рдмрд┐рд▓реНрдб рдореЗрдВ 1.2.1 рдкрд░ рдХреБрдЫ рд╕реЗрдЧрдлреЙрд▓реНрдЯ рднреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореБрджреНрджрд╛ рдореЗрд░реЗ рдмрджрд▓рд╛рд╡ рд╕реЗ рдкрд╣рд▓реЗ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреЛрд▓рд╛рдм рдкрд░ рдореЗрд░реЗ рд▓рд┐рдП рдкреИрдЪ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рд╡рд┐рдирдореНрд░ рдЯрдХреНрдХрд░ред рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВрдиреЗ рдПрдХ рдХреЛрдб рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реБрдП рдЕрдВрддрд░ рдореЗрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реАред

рдЗрд╕реЗ рд░реБрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реАрдЖрдИ рдХреЛ рдкрд╛рд╕ рд╣реЛрдиреЗ рд╕реЗ рдХреНрдпрд╛ рд░реЛрдХрддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдЪреБрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдмрд┐рдЯрд░реЛрдЯ рдХреЛрдИ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ ' рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИред

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ #480 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рд╕рдорд╡рд░реНрддреА рдореБрджреНрджрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдорд╡рд░реНрддреА рд╣реИред

рдореИрдВрдиреЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди #480 рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖред рдпрд╣рд╛рдБ рдореЗрд░реА рдЖрдЬреНрдЮрд╛ рдереА - рдЗрд╕рдХреА рдПрдХ рдбреЗрдмрд┐рдпрди-рдЖрдзрд╛рд░рд┐рдд рдЫрд╡рд┐:

docker run -i continuumio/anaconda3 /bin/bash <<EOF

cat /etc/os-release
apt-get update
mkdir /usr/share/man/man1
apt-get -y install openjdk-11-jdk-headless gcc ant

conda create -y -n pyjnius python=3.7.5
conda activate pyjnius

git clone https://github.com/kivy/pyjnius.git
cd pyjnius/
python -m pip install -U setuptools cython
python setup.py bdist_wheel
pip install --timeout=120 .[dev,ci]
ant all
cd tests/
CLASSPATH="../build/test-classes:../build/classes" PYTHONPATH=/opt/conda/envs/pyjnius/lib/python3.7/site-packages/ pytest -v
cd ../
git checkout -b issue_465 origin/issue_465

python setup.py bdist_wheel
pip install --timeout=120 .[dev,ci]
ant all
cd tests/
CLASSPATH="../build/test-classes:../build/classes" PYTHONPATH=/opt/conda/envs/pyjnius/lib/python3.7/site-packages/ pytest -v

EOF

рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдорд╛рд╕реНрдЯрд░ рдФрд░ рд╢рд╛рдЦрд╛ рдкрд░ рдкрд╛рд╕ рд╣реБрдПред

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ, рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐рдпрд╛рдВ 1.2.1 рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕рдмрдХреБрдЫ 1.2.0 рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рдлреА рдЦрд░рд╛рдм рдмрдЧ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ 1.2.1 рд░рд┐рд▓реАрдЬ рдХреЛ рд╣рдЯрд╛рдиреЗ рдпрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕реЗ рдЕрдиреБрдкрдпреЛрдЧреА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ?

рдЗрд╕реЗ рд░реБрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реАрдЖрдИ рдХреЛ рдкрд╛рд╕ рд╣реЛрдиреЗ рд╕реЗ рдХреНрдпрд╛ рд░реЛрдХрддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдЪреБрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдмрд┐рдЯрд░реЛрдЯ рдХреЛрдИ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ ' рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИред

рдХреНрдпрд╛ рдореИрдВ рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ? рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рдкреИрдЪ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрд╛ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

рдЗрд╕ рдкрд░ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП:

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ getDeclaredMethods() рдФрд░ getMethods() рдХреЛ рдорд┐рд▓рд╛рдирд╛ рдЬрд╡рд╛рдм рд╣реИред getMethods() рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рд╣реИрдВ:

 def test_super_interface(self):
        LinkedList = autoclass('java.util.LinkedList')
        words = LinkedList()
        words.add('hello')
        words.add('world')
        q = cast('java.util.Queue', words)
        self.assertEqual(2, q.size())
        self.assertIsNotNone(q.iterator())

    def test_super_object(self):
        LinkedList = autoclass('java.util.LinkedList')
        words = LinkedList()
        words.hashCode()

    def test_super_interface_object(self):
        LinkedList = autoclass('java.util.LinkedList')
        words = LinkedList()
        q = cast('java.util.Queue', words)
        q.hashCode()

рдЬрдм рд╣рдо рдХреЗрд╡рд▓ getDeclaredMethods() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

getMethods() рд╕рд╛рде рдореЗрд░рд╛ рдПрдХрдорд╛рддреНрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ test_inheritance.py рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдорд╛рдореВрд▓реА рд╕рдорд╕реНрдпрд╛ рд╣реИ - org.jnius.Child рдХрд╛ рд╕реНрдерд┐рд░ newInstance() org.jnius.Parent newInstance() рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ getMethods() рджреЛрдиреЛрдВ newInstance() рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП JavaMultipleMethod рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЧрд▓рдд рд╣реИ: Child.newInstance() рдХреЛ Parent.newInstance() рдЫрд┐рдкрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - https://www.java67.com/2012/08/can-we-override-static-method-in-java.html рджреЗрдЦреЗрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ Jshell рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

jshell> org.jnius.Child.newInstance()
$3 ==> org.jnius.Child<strong i="24">@506c589e</strong>

рд╣рд╛рдп @ рдЯреАрд╢рд░реНрдЯрдореИрди рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдиреЗ getMethods() рдкреНрд░рддрд┐рдмрджреНрдз рдХрд┐рдпрд╛ рд╣реИред рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреА рднреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЙрд╕ рдмрдЪреНрдЪреЗ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред newInstance() рдХреЛ Parent.newInstance() рдХреЛ рдЫреБрдкрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдСрдЯреЛрдХреНрд▓рд╛рд╕ () рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рдХрдХреНрд╖рд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝ рдкрд░ рдЪрд▓рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдкрд░реАрдд рдХреНрд░рдо рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛рдиреА java.lang.Object рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ред

рдПрдЪрдПрдо, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ java.util.Queue рдСрдЯреЛрдХреНрд▓рд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рд▓реА рдЧрдИ рд╡рд╕реНрддреБ рдореЗрдВ size рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдЧрд▓рдд рд╣реИред
рдореИрдВ рдЖрдкрдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рд░рд┐рд╡рд░реНрд╕ рд▓реБрдХрдЕрдк рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, JavaMultipleMethod рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╕рдорд╛рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛, рдЬреЛ рдПрдХ рдЕрдЪреНрдЫреА рд░рдгрдиреАрддрд┐ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

501 рдиреЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд┐рдПред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ред (рд╕реНрддреБрддрд┐ рд╣реЛ)ред

рд╕рдВрд░рдХреНрд╖рд┐рдд рдХреНрд╖реЗрддреНрд░ рдЕрднреА рднреА рдЧрд╛рдпрдм рд╣реИрдВ!

рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ public рд╕реЗ protected рдмрджрд▓рдиреЗ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

#500 рдкрд░ рдЪрд░реНрдЪрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдирд┐рдЬреА/рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ/рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд▓рдЧ рд╣реИ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдмрдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдкрдХреЗ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде, рдпрд╣ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдЪ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдпрд╣ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рд╕рдЪ рдирд╣реАрдВ рд╣реИ (рдФрд░ рд╕рдВрднрд╡рддрдГ рдХрднреА рдирд╣реАрдВ рдерд╛?), рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЧ рд╣реИ , рдлрд┐рд░ рдХреНрдпрд╛ рд╣рдо рдЙрдирдХреА рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЗ рд╕реНрддрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрди рд╡рд┐рдзрд┐рдпреЛрдВ/рдлрд╝реАрд▓реНрдб рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдпрд╣ рдмрдЧ рдмрдВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рд▓рд┐рдП рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЦреЛрд▓рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдпрд╣ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рд╕рдЪ рдирд╣реАрдВ рд╣реИ (рдФрд░ рд╕рдВрднрд╡рддрдГ рдХрднреА рдирд╣реАрдВ рдерд╛?)

рдЗрд╕рдиреЗ <1.2.1 рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдореНрдореАрдж рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ >1.2.1,<2.0 рдореЗрдВ рднреА рдХрд╛рдо рдХрд░реЗ, рднрд▓реЗ рд╣реА рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕