рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ?
рдЬрд╛рд╡рд╛ рдХрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рддрдВрддреНрд░ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЙрдирдХреЗ рдирд╛рдо рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХрдХреНрд╖рд╛рдУрдВ, рдЗрдВрдЯрд░рдлреЗрд╕, рдлрд╝реАрд▓реНрдб рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди рдПрдкреАрдЖрдИ рдЖрдкрдХреЛ рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ, рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдлрд╝реАрд▓реНрдб рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред
рдЖрдЗрдП рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЬреЛ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВ:
- рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд╡рд░реНрдЧ рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдВ/рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ
- рдХреНрд▓рд╛рд╕ рдореЙрдбрд┐рдлрд╛рдпрд░реНрд╕, рдлреАрд▓реНрдбреНрд╕, рдореЗрдердбреНрд╕, рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯреНрд╕, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдФрд░ рд╕реБрдкрд░рдХреНрд▓рд╛рд╕реЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
- рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдХреМрди рд╕реА рд╡рд┐рдзрд┐рдпрд╛рдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ
- рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдБ рдЬрд┐рд╕рдХрд╛ рд╡рд░реНрдЧ рдирд╛рдо рддрдм рддрдХ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛
- рдирд╛рдо рд╕реЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
- рдирд╛рдо рд╕реЗ рдПрдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
рд▓рдЧрднрдЧ рд╕рднреА рдЖрдзреБрдирд┐рдХ рдЬрд╛рд╡рд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдпрд╣ рдЖрдЬ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЬрд╛рд╡рд╛/рдЬрд╛рд╡рд╛ рдИрдИ рдврд╛рдВрдЪреЗ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
- рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ
- JUnit рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪрд╛
рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдХрднреА рдЗрди рддрдВрддреНрд░реЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрддреНрддрд░ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЕрд╕реНрдкрд╖реНрдЯ рднреА рд╣реИ: рдкреНрд░рддрд┐рдмрд┐рдВрдм рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рд▓рдЪреАрд▓реЗрдкрди рдФрд░ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рд╣реЛрддреЗ рд╣реИрдВред рддреЛ рдЪрд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░рддреЗ рд╣реИрдВ:
- рдЖрд╡реЗрджрди рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрдиред рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╣рдореЗрдВ рдЙрд╕ рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (encapsulation рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди)ред
- рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рддрд┐рдмрдВрдзред рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдмрдВрдзрдХ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред
- рдХрдо рдкреНрд░рджрд░реНрд╢рдиред рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╡рд░реНрдЧ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕рдкрд╛рде рдХреЛ рд╕реНрдХреИрди рдХрд░рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
- рдмрдирд╛рдП рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдпрд╣ рдХрдо рд▓рдЪреАрд▓рд╛ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдХрдард┐рди рд╣реИред
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛
рд╕рднреА рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕рдВрдЪрд╛рд▓рди рдПрдХ java.lang.Class рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП, java.lang.Class рдХрд╛ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдирдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдФрд░ рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЖрдЗрдП java.lang.Class рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦреЗрдВ :
рддрд░реАрдХрд╛ | рдХрд╛рд░реНрдп |
---|---|
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЧреЗрдЯрдирд╛рдо (); | рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ |
int getModifiers (); | рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ |
рдкреИрдХреЗрдЬ рдЧреЗрдЯрдкреИрдХреЗрдЬ (); | рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИ |
рдХреНрд▓рд╛рд╕ рдЧреЗрдЯрд╕реБрдкрд░рдХреНрд▓рд╛рд╕ (); | рдореВрд▓ рд╡рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИ |
рдХрдХреНрд╖рд╛ [] getInterfaces (); | рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ |
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ [] getConstructors (); | рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИ |
рдлреАрд▓реНрдбреНрд╕ [] getFields (); | рдПрдХ рд╡рд░реНрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ |
рдлрд╝реАрд▓реНрдб getField (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝реАрд▓реНрдбрдирд╛рдо); | рдирд╛рдо рд╕реЗ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ |
рд╡рд┐рдзрд┐ [] getMethods (); | рддрд░реАрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ |
рдХрдХреНрд╖рд╛рдУрдВ, рдЗрдВрдЯрд░рдлреЗрд╕, рдлрд╝реАрд▓реНрдб рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрд░реАрдХреЗ рд╣реИрдВред рдРрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдБ рднреА рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдлрд╝реАрд▓реНрдб рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдпрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдирд┐рдЬреА рдлрд╝реАрд▓реНрдб рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рджреЗрддреА рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рджреЗрдЦреЗрдВрдЧреЗред
рдЕрднреА рд╣рдо java.lang.Class рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рддреАрди рддрд░реАрдХреЗ рд╣реИрдВред
1. Class.forName рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЪрд▓ рд░рд╣реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП forName (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рд╕рдирд╛рдо) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рдХреЛрдб рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдХреНрд╖рд╛рдПрдВ рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд▓рд┐рдП рдПрдХ рд╡реНрдпрдХреНрддрд┐ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
package com.company;
public class Person {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
рдФрд░ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
public class TestReflection {
public static void main(String[] args) {
try {
Class<?> aClass = Class.forName("com.company.Person");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдВрднрд╡ рд╣реИ рдпрджрд┐ рд╡рд░реНрдЧ рдХрд╛ рдкреВрд░рд╛ рдирд╛рдо рдЬреНрдЮрд╛рдд рд╣реЛред рддрдм рдЖрдк рд╕реНрдЯреИрдЯрд┐рдХ Class.forName() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд░реНрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
2. рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдпрджрд┐ рдХреЛрдИ рдкреНрд░рдХрд╛рд░ рдЙрдкрд▓рдмреНрдз рд╣реИ рд▓реЗрдХрд┐рди рдЙрд╕рдХрд╛ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рдореЗрдВ .class рдЬреЛрдбрд╝рдХрд░ рдХрдХреНрд╖рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреА рдХрдХреНрд╖рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред
Class aClass = Person.class;
3. .getClass() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдпрджрд┐ рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрдкрд▓рдмреНрдз рд╣реИ, рддреЛ рдХреНрд▓рд╛рд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ object.getClass() рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ ред
Person person = new Person();
Class aClass = person.getClass();
рдкрд┐рдЫрд▓реЗ рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
A.class рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рдордп рдЖрдк рдХрд┐рд╕ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ .class рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред
рдПрдХ рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдЖрдЗрдП рдЙрди рддрд░реАрдХреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ: getDeclaredMethods() рдФрд░ getMethods() ред
getDeclaredMethods() рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ, рдирд┐рдЬреА, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдФрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рд╕рд╣рд┐рдд рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдП рдЧрдП рд╡рд░реНрдЧ рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рднреА рдШреЛрд╖рд┐рдд рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд╣реАрдВ ред
getMethods() рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдП рдЧрдП рд╡рд░реНрдЧ рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрдердб рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рд▓реА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ - рдЬреЛ рдХрд┐ рдХреНрд▓рд╛рд╕ рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдФрд░ рд╕реБрдкрд░рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИрдВ ред
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЪрд▓рд┐рдП getDeclaredMethods() рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ред рджреЛ рддрд░реАрдХреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рд╣рдо рдЕрдореВрд░реНрдд рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЪрд▓рд┐рдП рдПрдХ рд╕реНрдЯреИрдЯрд┐рдХ рдореЗрдердб рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдореЗрдердб рдРрд░реЗ рдХреЛ List<String> рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ :
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class TestReflection {
public static void main(String[] args) {
final Method[] declaredMethods = Number.class.getDeclaredMethods();
List<String> actualMethodNames = getMethodNames(declaredMethods);
actualMethodNames.forEach(System.out::println);
}
private static List<String> getMethodNames(Method[] methods) {
return Arrays.stream(methods)
.map(Method::getName)
.collect(Collectors.toList());
}
}
рдпрд╣рд╛рдБ рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:
рд╢реЙрд░реНрдЯрд╡реИрд▓реНрдпреВ
рдЗрдВрдЯрд╡реИрд▓реНрдпреВ
рд▓реЙрдиреНрдЧрд╡реИрд▓реНрдпреВ
рдлреНрд▓реЛрдЯ рдлреНрд▓реЛрдЯрд╡реИрд▓реНрдпреВ;
doubleValue
рдпреЗ рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рддрд░реАрдХреЗ рд╣реИрдВ ред GetMethods() рдХреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ:
final Method[] methods = Number.class.getMethods();
List<String> actualMethodNames = getMethodNames(methods);
рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ, рд╣рдо рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯ рджреЗрдЦреЗрдВрдЧреЗ:
рд╢реЙрд░реНрдЯрд╡реИрд▓реНрдпреВ
рдЗрдВрдЯрд╡реИрд▓реНрдпреВ
рд▓реЙрдиреНрдЧрд╡реИрд▓реНрдпреВ
рдлреНрд▓реЛрдЯ рдлреНрд▓реЛрдЯрд╡реИрд▓реНрдпреВ;
рдбрдмрд▓рд╡реИрд▓реНрдпреВ
рдкреНрд░рддреАрдХреНрд╖рд╛
рдкреНрд░рддреАрдХреНрд╖рд╛
рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрд╢рдХреЛрдб getClass
рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ рд╕рднреА рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ
рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рд╡рд░реНрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░рд╛ рддрд░реАрдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреЛ рднреА рд▓реМрдЯрд╛рддрд╛ рд╣реИ ред
рдПрдХ рд╡рд░реНрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рд╡рд░реНрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП getFields рдФрд░ getDeclaredFields рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдЗрдП LocalDateTime рдХреНрд▓рд╛рд╕ рдХреЛ рджреЗрдЦреЗрдВред рд╣рдо рдЕрдкрдирд╛ рдХреЛрдб рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗ:
import java.lang.reflect.Field;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class TestReflection {
public static void main(String[] args) {
final Field[] declaredFields = LocalDateTime.class.getDeclaredFields();
List<String> actualFieldNames = getFieldNames(declaredFields);
actualFieldNames.forEach(System.out::println);
}
private static List<String> getFieldNames(Field[] fields) {
return Arrays.stream(fields)
.map(Field::getName)
.collect(Collectors.toList());
}
}
рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ LocalDateTime рд╡рд░реНрдЧ рдореЗрдВ рдирд┐рд╣рд┐рдд рдлрд╝реАрд▓реНрдбреНрд╕ рдХрд╛ рд╕реЗрдЯ рдорд┐рд▓рддрд╛ рд╣реИред
рдЕрдзрд┐рдХрддрдо
рд╕реАрд░рд┐рдпрд▓ рд╕рдВрд╕реНрдХрд░рдг рдпреВрдЖрдИрдбреА
рджрд┐рдирд╛рдВрдХ
рд╕рдордп
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╣рдорд╛рд░реА рдкрд┐рдЫрд▓реА рдкрд░реАрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк, рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рддреЗ рд╣реИрдВ:
final Field[] fields = LocalDateTime.class.getFields();
List<String> actualFieldNames = getFieldNames(fields);
рдЖрдЙрдЯрдкреБрдЯ:
рдореИрдХреНрд╕
рдЕрдм рдЖрдЗрдП рдЗрди рддрд░реАрдХреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВред
GetDeclaredFields рд╡рд┐рдзрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рддреА рд╣реИрдХрдХреНрд╖рд╛рд╡рд╕реНрддреБред
GetFields рд╡рд┐рдзрд┐ рд╡рд░реНрдЧ рдпрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдП рдЧрдП рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рддреА рд╣реИрдХрдХреНрд╖рд╛рд╡рд╕реНрддреБред
рдЕрдм рдЖрдЗрдП LocalDateTime рдХреЗ рдЕрдВрджрд░ рджреЗрдЦреЗрдВ ред

рд╡рд░реНрдЧ рдХрд╛рдорд┐рдирдФрд░рдореИрдХреНрд╕рдлрд╝реАрд▓реНрдб рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ getFields рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ ред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рджрддрд╛рд░реАрдЦ,рд╕рдордп,рд╕реАрд░рд┐рдпрд▓рд╡рд░реНрдЬрдирдпреВрдЖрдИрдбреАрд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдирд┐рдЬреА рд╕рдВрд╢реЛрдзрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ getFields рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдВрдЧреЗ , рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ getDeclaredFields рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдлреАрд▓реНрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг
рдЕрдм рдЗрд╕рдХрд╛ рд╕рдордп рдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╣реИ , рдЕрд░реНрдерд╛рддреН:
рддрд░реАрдХрд╛ | рдХрд╛рд░реНрдп |
---|---|
getModifiers | рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ |
getPackage | рдкреИрдХреЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ |
getSuperclass | рдЕрднрд┐рднрд╛рд╡рдХ рд╡рд░реНрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ |
getInterfaces | рдПрдХ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ |
getName | рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреЛрдЧреНрдп рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ |
getSimpleName | рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ |
getModifiers ()
рд╕рдВрд╢реЛрдзрдХ рдХреЛ a рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИрдХрдХреНрд╖рд╛рд╡рд╕реНрддреБред
рд╕рдВрд╢реЛрдзрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ , рд╕реНрдерд┐рд░ , рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрджрд┐ рдЬреИрд╕реЗ рдХреАрд╡рд░реНрдб рд╣реИрдВ ред рд╣рдо getModifiers () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╢реЛрдзрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
Class<Person> personClass = Person.class;
int classModifiers = personClass.getModifiers();
рдпрд╣ рдХреЛрдб рдПрдХ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИint рдпрд╣рд╛рдБрдЪрд░ рдЬреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдХреНрд╖реЗрддреНрд░ рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд рдмрд┐рдЯ рдХреЛ рд╕реЗрдЯ рдпрд╛ рд╕рд╛рдлрд╝ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдЪрд╛рд▓реВ рдпрд╛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо java.lang.reflect.Modifier рд╡рд░реНрдЧ рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╢реЛрдзрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :
import com.company.Person;
import java.lang.reflect.Modifier;
public class TestReflection {
public static void main(String[] args) {
Class<Person> personClass = Person.class;
int classModifiers = personClass.getModifiers();
boolean isPublic = Modifier.isPublic(classModifiers);
boolean isStatic = Modifier.isStatic(classModifiers);
boolean isFinal = Modifier.isFinal(classModifiers);
boolean isAbstract = Modifier.isAbstract(classModifiers);
boolean isInterface = Modifier.isInterface(classModifiers);
System.out.printf("Class modifiers: %d%n", classModifiers);
System.out.printf("Is public: %b%n", isPublic);
System.out.printf("Is static: %b%n", isStatic);
System.out.printf("Is final: %b%n", isFinal);
System.out.printf("Is abstract: %b%n", isAbstract);
System.out.printf("Is interface: %b%n", isInterface);
}
}
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд╡реНрдпрдХреНрддрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ:
public class Person {
тАж
}
рд╣рдореЗрдВ рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓рддрд╛ рд╣реИ:
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИ: рд╕рддреНрдп
рд╕реНрдерд┐рд░ рд╣реИ: рдЕрд╕рддреНрдп
рдЕрдВрддрд┐рдо рд╣реИ: рдЕрд╕рддреНрдп
рд╕рд╛рд░ рд╣реИ: рдЕрд╕рддреНрдп
рд╣реИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕: рдЕрд╕рддреНрдп
рдпрджрд┐ рд╣рдо рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЛ рд╕рд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕:
public abstract class Person { тАж }
рдФрд░ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ:
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИ: рд╕рддреНрдп
рд╕реНрдерд┐рд░ рд╣реИ: рдЕрд╕рддреНрдп
рдЕрдВрддрд┐рдо рд╣реИ: рдЕрд╕рддреНрдп
рд╕рд╛рд░ рд╣реИ: рд╕рддреНрдп
рд╣реИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕: рдЕрд╕рддреНрдп
рд╣рдордиреЗ рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕рдВрд╢реЛрдзрдХ рд╡рд░реНрдЧ рдХреЗ рд╕реНрдерд┐рд░ рддрд░реАрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рднреА рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред
рдЧреЗрдЯрдкреИрдХреЗрдЬ ()
рдХреЗрд╡рд▓ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдЬрд╛рдирдХрд░ рд╣рдо рдЙрд╕рдХреЗ рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Class<Person> personClass = Person.class;
final Package aPackage = personClass.getPackage();
System.out.println(aPackage.getName());
рдЧреЗрдЯрд╕реБрдкрд░рдХреНрд▓рд╛рд╕ ()
рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕рдХреЗ рдореВрд▓ рд╡рд░реНрдЧ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ:
public static void main(String[] args) {
Class<Person> personClass = Person.class;
final Class<? super Person> superclass = personClass.getSuperclass();
System.out.println(superclass);
}
рд╣рдореЗрдВ рдкреНрд░рд╕рд┐рджреНрдз рд╡рд╕реНрддреБ рд╡рд░реНрдЧ рдорд┐рд▓рддрд╛ рд╣реИ:
class java.lang.Object
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рдФрд░ рдореВрд▓ рд╡рд░реНрдЧ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рджреЗрдЦреЗрдВрдЧреЗ:
package com.company;
class Human {
// Some info
}
public class Person extends Human {
private int age;
private String name;
// Some info
}
рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдЕрдкрдирд╛ рдореВрд▓ рд╡рд░реНрдЧ рдорд┐рд▓рддрд╛ рд╣реИ:
class com.company.Human
рдЧреЗрдЯрдЗрдВрдЯрд░рдлреЗрд╕ ()
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрдХреНрд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рд╕реВрдЪреА рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
public static void main(String[] args) {
Class<Person> personClass = Person.class;
final Class<?>[] interfaces = personClass.getInterfaces();
System.out.println(Arrays.toString(interfaces));
}
рдФрд░ рдЕрдкрдиреЗ рд╡реНрдпрдХреНрддрд┐ рд╡рд░реНрдЧ рдХреЛ рдмрджрд▓рдирд╛ рди рднреВрд▓реЗрдВ :
public class Person implements Serializable { тАж }
рдЖрдЙрдЯрдкреБрдЯ:
рдПрдХ рд╡рд░реНрдЧ рдХрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдорд┐рд▓рддреА рд╣реИрдХрдХреНрд╖рд╛рд╡рд╕реНрддреБрдУрдВред рдЬрд╛рд╡рд╛ рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди рдПрдкреАрдЖрдИ рдореЗрдВ, рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рднреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИрдХрдХреНрд╖рд╛рд╡рд╕реНрддреБрдУрдВред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИ, рдЙрд╕рдХреЗ рдореВрд▓ рд╡рд░реНрдЧ рдХреЛ рдирд╣реАрдВред рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ рдФрд░ рдЙрд╕рдХреЗ рд╕рднреА рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЛ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
getName () рдФрд░ getSimpleName () рдФрд░ getCanonicalName ()
рдЖрдЗрдП рдПрдХ рдЖрджрд┐рдо, рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рд╡рд░реНрдЧ, рдПрдХ рдЕрдирд╛рдо рд╡рд░реНрдЧ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд░реНрдЧ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦреЗрдВ:
public class TestReflection {
public static void main(String[] args) {
printNamesForClass(int.class, "int class (primitive)");
printNamesForClass(String.class, "String.class (ordinary class)");
printNamesForClass(java.util.HashMap.SimpleEntry.class,
"java.util.HashMap.SimpleEntry.class (nested class)");
printNamesForClass(new java.io.Serializable() {
}.getClass(),
"new java.io.Serializable(){}.getClass() (anonymous inner class)");
}
private static void printNamesForClass(final Class<?> clazz, final String label) {
System.out.printf("%s:%n", label);
System.out.printf("\tgetName()):\t%s%n", clazz.getName());
System.out.printf("\tgetCanonicalName()):\t%s%n", clazz.getCanonicalName());
System.out.printf("\tgetSimpleName()):\t%s%n", clazz.getSimpleName());
System.out.printf("\tgetTypeName():\t%s%n%n", clazz.getTypeName());
}
}
рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо:
getName ()): int
getCanonicalName ()): int
getSimpleName ()): int
getTypeName (): int
String.class (рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ):
getName ()): java.lang.String
getCanonicalName () ): java.lang.String
getSimpleName ()): рд╕реНрдЯреНрд░рд┐рдВрдЧ
getTypeName (): java.lang.String
java.util.HashMap.SimpleEntry.class (рдиреЗрд╕реНрдЯреЗрдб рдХреНрд▓рд╛рд╕):
getName ()): java.util.AbstractMap$SimpleEntry
getCanonicalName ( )): java.util.AbstractMap.SimpleEntry
getSimpleName()): SimpleEntry
getTypeName(): java.util.AbstractMap$SimpleEntry
new java.io.Serializable(){}.getClass() (рдЕрдирд╛рдо рдЖрдВрддрд░рд┐рдХ рд╡рд░реНрдЧ):
getName() ): TestReflection$1
getCanonicalName ()): рдЕрд╢рдХреНрдд
getSimpleName()):
getTypeName(): TestReflection$1
рдЕрдм рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ:
-
getName() рдЗрдХрд╛рдИ рдХрд╛ рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИред
-
getCanonicalName() рдЬрд╛рд╡рд╛ рд▓реИрдВрдЧреНрд╡реЗрдЬ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рдХреИрдиреЛрдирд┐рдХрд▓ рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХрд╛ рдХреЛрдИ рд╡рд┐рд╣рд┐рдд рдирд╛рдо рдирд╣реАрдВ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдпрджрд┐ рдпрд╣ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдпрд╛ рдЕрдирд╛рдо рд╡рд░реНрдЧ рд╣реИ рдпрд╛ рдПрдХ рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рддрддреНрд╡ рдкреНрд░рдХрд╛рд░ рдПрдХ рд╡рд┐рд╣рд┐рдд рдирд╛рдо рдирд╣реАрдВ рд╣реИ) рддреЛ рд╢реВрдиреНрдп рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред
-
getSimpleName() рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рд╕рд░рд▓ рдирд╛рдо рджреЗрддрд╛ рд╣реИред рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдЧреБрдордирд╛рдо рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
-
getTypeName() рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдирд╛рддреНрдордХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред