рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп harazhiteli!
рд╣рд╛рд▓ рд╣реА рдореЗрдВ,
рдЬрд╛рд╡рд╛ 7 , рдХрдИ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд, рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХрдИ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреА рд░рдЪрдирд╛ рд╕реЗ рдирд┐рд░рд╛рд╢ рдереЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓рд╛рдореНрдмрд╛ рдЬреИрд╕реА рд╡рд┐рднрд┐рдиреНрди рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЙрдореНрдореАрджреЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдереАрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрднреА рднреА рдХрдИ рдирд╡рд╛рдЪрд╛рд░ рд╣реИрдВ рдФрд░ рдЖрдЬ рдореИрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ -
рджрд╛ рд╡рд┐рдВрдЪреА рдорд╢реАрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ , рдЬреЛ рдЖрдкрдХреЛ рдЬреЗрд╡реАрдПрдо рдкрд░ рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рд╣рдо рджрд╛ рд╡рд┐рдВрдЪреА рдорд╢реАрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ -
рд╣реИрдВрдбрд▓ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдореИрдВ рдЕрднреА рднреА рднрд╛рд╖рд╛ рдХреЗ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рдирд╣реАрдВ рд╣реБрдЖ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ :) рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬрдиреНрдо рджрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдм рддрдХ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╕рд╛рдЗрдХрд┐рд▓ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдФрд░ рдкрд╛рд╕рд┐рдВрдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдЕрддрд┐рднрд╛рд░рд┐рдд рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕реА #, рдЬрд╣рд╛рдВ рдпрд╣ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣реИрдВ:
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
class A { } class B extends A { } public class Test { public void call(A a) { System. out .println( "A" ); } public void call(B b) { System. out .println( "B" ); } public static void main( String [] argv) { A b = new B(); Test test = new Test(); test.call(b); } } * This source code was highlighted with Source Code Highlighter .
рдЬрд╛рд╡рд╛ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░,
public void call(A a)
рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рддрджрдиреБрд╕рд╛рд░ "рдП" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ
B
рд╣реИ
B
рд╣рдореЗрдВ рдЬрд┐рд╕ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЙрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:
- рдЕрдЧрд░ (рдмреА рдЗрдВрд╕реНрдЯреЛрдлрд╝ рдмреА) {
- test.call ((B) b);
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЬреАрд╡рди рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рджрд░реНрдЬрди рдРрд╕реА рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ, рддреЛ рдХреЛрдб рдХреБрд░реВрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рджреЛрд╣рд░рд╛рд╡ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ 7 рдиреЗ рдЙрдкрдХрд░рдг рдкреЗрд╢ рдХрд┐рдП рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рднрд╛рд╖рд╛ рдХреЗ рд╕реНрддрд░ рдкрд░ рдирд╣реАрдВ, рддреЛ рдХрдо рд╕реЗ рдХрдо рдмреИрд╕рд╛рдЦреА рдХреЗ рд╕реНрддрд░ рдкрд░ рдирд╣реАрдВред рддреЛ,
java.lang.invoke
рдкреИрдХреЗрдЬ рд╕реЗ рдХрдХреНрд╖рд╛рдПрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдВрдЧреА:
MethodHandle
рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдпрд╣ рдмрд╛рдд рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдХреНрд▓реЛрдЬрд░ рдФрд░ рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдПрдЧреА (рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рд╡рд╣рд╛рдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рд▓реИрдореНрдмреНрдбрд╛ рдХреЛ рдЕрдирд╛рдо рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдВрдд рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рд╣реЛрдЧрд╛)редMethodType
- рд╡рд┐рдзрд┐ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рд░рд┐рдЯрд░реНрди рдорд╛рди рдФрд░ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕реВрдЪреАредMethodHandles
- рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╡рд░реНрдЧредLookup
- рдХреНрд▓рд╛рд╕ MethodHandles
рдХреНрд▓рд╛рд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рддрд░реАрдХреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рддреЛ, рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ - рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧрд╛ред рдЕрдм рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
- рдЖрдпрд╛рдд рд╕реНрдерд┐рд░ java.lang.invoke.MethodHandlesред *;
- import java.lang.invoke.MethodHandle;
- рдЖрдпрд╛рдд java.lang.invoke.MethodType;
- рдХрдХреНрд╖рд╛ рдП {
- }
- рдХреНрд▓рд╛рд╕ рдмреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░
- }
- рдкрдмреНрд▓рд┐рдХ рдХреНрд▓рд╛рд╕ рдЯреЗрд╕реНрдЯ {
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдХреЙрд▓ (рдП) {
- рдкреНрд░рдгрд╛рд▓реАред рдмрд╛рд╣рд░ .println ( "рдП" );
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп рдХреЙрд▓ (B b) {
- рдкреНрд░рдгрд╛рд▓реАред рдЖрдЙрдЯ .println ( "рдмреА" );
- }
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╢реВрдиреНрдп рдореБрдЦреНрдп ( рд╕реНрдЯреНрд░рд┐рдВрдЧ [] argv) {
- рдП рдмреА = рдирдпрд╛ рдмреА ();
- рдкрд░реАрдХреНрд╖рдг рдкрд░реАрдХреНрд╖рдг = рдирдпрд╛ рдкрд░реАрдХреНрд╖рдг ();
- рдХреЛрд╢рд┐рд╢ рдХрд░реЛ {
- рд▓реБрдХрдЕрдк рд▓реБрдХрдЕрдк = рд▓реБрдХрдЕрдк ();
- MethodType mt = MethodType.methodType ( рд╢реВрдиреНрдп ; рд╡рд░реНрдЧ , b.getClass ());
- рдореЗрдердбрд╛рдВрдбрд▓ рдПрдордПрдЪ = рд▓реБрдХрд┐рдВрдЧ.рдлрдВрдбрд╡рд░реНрде (рдЯреЗрд╕реНрдЯред рдХреНрд▓рд╛рд╕ , "рдХреЙрд▓" , рдПрдордЯреА);
- mh.invokeWithArguments (рдкрд░реАрдХреНрд╖рдг, рдмреА);
- } рдкрдХрдбрд╝рдирд╛ (рдлреЗрдВрдХрдиреЗ рдпреЛрдЧреНрдп рдИ) {
- e.printStackTrace ();
- }
- }
- }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рд▓рд╛рдЗрди 27 рдореЗрдВ, рд╣рдо рд╕реАрдзреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ "рдЦреЛрдЬ рдЗрдВрдЬрди" рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, 28 рд▓рд╛рдЗрди рдкрд░, рд╣рдо рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдкрд╣рд▓реЗ
methodType
рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░
methodType
рддрд░реАрдХреЗ рдХреА рдкреИрд░рд╛рдореАрдЯрд░ рд╕реВрдЪреА рдХреЗ рдкреНрд░рдХрд╛рд░ред рд▓рд╛рдЗрди 30 - рд╣рдо
MethodHandle
call
рдФрд░ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдФрд░
mt
рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде
Test
рдХреНрд▓рд╛рд╕ рдореЗрдВ рддрд░реАрдХреЛрдВ рдХреА рдЦреЛрдЬ
MethodHandle
рдкрд░рд┐рдгрд╛рдо
MethodHandle
рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред 31 рд▓рд╛рдЗрди рдкрд░, рд╣рдо рдкреИрд░рд╛рдореАрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде
test
рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд "рдмреА" рджреЗрдЦрддреЗ рд╣реИрдВред
Lookup
рдХреНрд▓рд╛рд╕ рдореЗрдВ рдЕрднреА рднреА рдХреБрдЫ рддрд░реАрдХреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдереИрддрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ред