[1091] 2020-04-22_Javassist学习

文档创建者:s7ckTeam
浏览次数:4
最后更新:2025-01-16
2020-04-22_Javassist学习 J a v a s s i s t   C h a B u g   C h a B u g   2 0 2 0 - 0 4 - 2 2 J a v a c l a s s c l a s s c l a s s c l a s s m a v e n J a v a s s i s t 使 j a v a s s i s t P e r s o n J a v a s s i s t < ! - -   h t t p s : / / m v n r e p o s i t o r y . c o m / a r t i f a c t / j a v a s s i s t / j a v a s s i s t   - - >                 < d e p e n d e n c y >                         < g r o u p I d > j a v a s s i s t < / g r o u p I d >                         < a r t i f a c t I d > j a v a s s i s t < / a r t i f a c t I d >                         < v e r s i o n > 3 . 1 2 . 1 . G A < / v e r s i o n >                 < / d e p e n d e n c y > p a c k a g e   c o m . y 4 e r . l e a r n ; i m p o r t   j a v a s s i s t . * ; p u b l i c   c l a s s   C r e a t e C l a s s   {         p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ]   a r g s )   t h r o w s   E x c e p t i o n   {                 / /   j a v a s s i s t                 C l a s s P o o l   p o o l   =   C l a s s P o o l . g e t D e f a u l t ( ) ;                 / /   c o m . y 4 e r . l e a r n . P e r s o n                 C t C l a s s   c t C l a s s   =   p o o l . m a k e C l a s s ( " c o m . y 4 e r . l e a r n . P e r s o n " ) ;                 / /   c t C l a s s s t r i n g n a m e                 C t F i e l d   n a m e   =   n e w   C t F i e l d ( p o o l . g e t ( " j a v a . l a n g . S t r i n g " ) ,   " n a m e " ,   c t C l a s s ) ;                 / /   p r i v a t e                 n a m e . s e t M o d i f i e r s ( M o d i f i e r . P R I V A T E ) ;                 / /   n a m e z h a n g s a n                 c t C l a s s . a d d F i e l d ( n a m e ,   C t F i e l d . I n i t i a l i z e r . c o n s t a n t ( " z h a n g s a n " ) ) ;                 / /   g e t s e t                 c t C l a s s . a d d M e t h o d ( C t N e w M e t h o d . g e t t e r ( " g e t N a m e " , n a m e ) ) ;
P e r s o n . c l a s s                 c t C l a s s . a d d M e t h o d ( C t N e w M e t h o d . s e t t e r ( " s e t N a m e " , n a m e ) ) ;                 / /                   C t C o n s t r u c t o r   c t C o n s t r u c t o r   =   n e w   C t C o n s t r u c t o r ( n e w   C t C l a s s [ ] { } ,   c t C l a s s ) ;                 c t C o n s t r u c t o r . s e t B o d y ( " { n a m e = " x i a o m i n g " ; } " ) ;                 c t C l a s s . a d d C o n s t r u c t o r ( c t C o n s t r u c t o r ) ;                 / /                   C t C o n s t r u c t o r   c t C o n s t r u c t o r 1   =   n e w   C t C o n s t r u c t o r ( n e w   C t C l a s s [ ] { p o o l . g e t ( " j a v a . l a n g . S t r i n g " ) } ,   c t C l a s s ) ;                 c t C o n s t r u c t o r 1 . s e t B o d y ( " { $ 0 . n a m e = $ 1 ; } " ) ;                 c t C l a s s . a d d C o n s t r u c t o r ( c t C o n s t r u c t o r 1 ) ;                 / /   p u b l i c p r i n t N a m e ( )                   C t M e t h o d   p r i n t N a m e   =   n e w   C t M e t h o d ( C t C l a s s . v o i d T y p e ,   " p r i n t N a m e " ,   n e w   C t C l a s s [ ] { } ,   c t C l a s s ) ;                 p r i n t N a m e . s e t M o d i f i e r s ( M o d i f i e r . P U B L I C ) ;                 p r i n t N a m e . s e t B o d y ( " { S y s t e m . o u t . p r i n t l n ( $ 0 . n a m e ) ; } " ) ;                 c t C l a s s . a d d M e t h o d ( p r i n t N a m e ) ;                 / /   c l a s s                 c t C l a s s . w r i t e F i l e ( ) ;                 c t C l a s s . d e t a c h ( ) ;         } }
使 d e m o 使 j a v a s s i s t C t C l a s s c l a s s C l a s s P o o l C t C l a s s C l a s s P o o l C t C l a s s C t C l a s s C t C l a s s . d e t a c h ( ) C l a s s P o o l 1 .   g e t D e f a u l t ( )   C l a s s P o o l 2 .   a p p e n d C l a s s P a t h ( )   C l a s s P a t h 3 .   i n s e r t C l a s s P a t h ( )   C l a s s P a t h j a r 4 .   g e t ( )   C t C l a s s 5 .   t o C l a s s ( )   C t C l a s s C l a s s   6 .   m a k e C l a s s ( )   h t t p : / / w w w . j a v a s s i s t . o r g / h t m l / j a v a s s i s t / C l a s s P o o l . h t m l C t C l a s s 1 .   a d d C o n s t r u c t o r ( )   2 .   a d d F i e l d ( )   3 .   a d d I n t e r f a c e ( )   4 .   a d d M e t h o d ( )   5 .   f r e e z e ( )   使 6 .   d e f r o s t ( )   使 7 .   d e t a c h ( )   C l a s s P o o l 8 .   t o B y t e c o d e ( )   9 .   t o C l a s s ( )   C l a s s 1 0 .   w r i t e F i l e ( )   . c l a s s 1 1 .   s e t M o d i f i e r s ( )   h t t p : / / w w w . j a v a s s i s t . o r g / h t m l / j a v a s s i s t / C t C l a s s . h t m l C t M e t h o d C t B e h a v i o r 1 .   i n s e r t B e f o r e   2 .   i n s t e r A f t e r     r e t u r n   3 .   i n s e r t A t   4 .   s e t B o d y     a b s t r a c t 5 .   m a k e   h t t p : / / w w w . j a v a s s i s t . o r g / h t m l / j a v a s s i s t / C t B e h a v i o r . h t m l s e t B o d y ( ) 使 $
使 C t C l a s s c t C l a s s P e r s o n . c l a s s P e r s o n 1 .   2 .   c l a s s 3 .   c l a s s I P e r s o n P e r s o n / /   $ 0 t h i s   $ 1   p r i n t N a m e . s e t B o d y ( " { S y s t e m . o u t . p r i n t l n ( $ 0 . n a m e ) ; } " ) ; / /   O b j e c t   o   =   c t C l a s s . t o C l a s s ( ) . n e w I n s t a n c e ( ) ; M e t h o d   s e t N a m e   =   o . g e t C l a s s ( ) . g e t M e t h o d ( " s e t N a m e " ,   S t r i n g . c l a s s ) ; s e t N a m e . i n v o k e ( o , " Y 4 e r " ) ; M e t h o d   p r i n t N a m e 1   =   o . g e t C l a s s ( ) . g e t M e t h o d ( " p r i n t N a m e " ) ; p r i n t N a m e 1 . i n v o k e ( o ) ; C l a s s P o o l   p o o l   =   C l a s s P o o l . g e t D e f a u l t ( ) ; p o o l . a p p e n d C l a s s P a t h ( " E : c o d e j a v a j a v a s s i s t - l e a r n c o m y 4 e r l e a r n " ) ; C t C l a s s   P e r s o n C l a s s   =   p o o l . g e t ( " c o m . y 4 e r . l e a r n . P e r s o n " ) ; O b j e c t   o   =   P e r s o n C l a s s . t o C l a s s ( ) . n e w I n s t a n c e ( ) ; / / p a c k a g e   c o m . y 4 e r . l e a r n ; p u b l i c   i n t e r f a c e   I P e r s o n   {         S t r i n g   g e t N a m e ( ) ;
P e r s o n I P e r s o n j a v a s s i s t 使 P e r s o n         v o i d   s e t N a m e ( S t r i n g   n a m e ) ;         v o i d   p r i n t N a m e ( ) ; } C l a s s P o o l   p o o l   =   C l a s s P o o l . g e t D e f a u l t ( ) ; p o o l . a p p e n d C l a s s P a t h ( " E : c o d e j a v a j a v a s s i s t - l e a r n c o m y 4 e r l e a r n P e r s o n . c l a s s " ) ; C t C l a s s   I P e r s o n   =   p o o l . g e t ( " c o m . y 4 e r . l e a r n . I P e r s o n " ) ; C t C l a s s   P e r s o n   =   p o o l . g e t ( " c o m . y 4 e r . l e a r n . P e r s o n " ) ; P e r s o n . d e f r o s t ( ) ; P e r s o n . s e t I n t e r f a c e s ( n e w   C t C l a s s [ ] { I P e r s o n } ) ; I P e r s o n   o   =   ( I P e r s o n )   P e r s o n . t o C l a s s ( ) . n e w I n s t a n c e ( ) ; o . s e t N a m e ( " a a a " ) ; S y s t e m . o u t . p r i n t l n ( o . g e t N a m e ( ) ) ; o . p r i n t N a m e ( ) ; / / / /   S o u r c e   c o d e   r e c r e a t e d   f r o m   a   . c l a s s   f i l e   b y   I n t e l l i J   I D E A / /   ( p o w e r e d   b y   F e r n f l o w e r   d e c o m p i l e r ) / / p a c k a g e   c o m . y 4 e r . l e a r n ; p u b l i c   c l a s s   P e r s o n   i m p l e m e n t s   I P e r s o n   {         p r i v a t e   S t r i n g   n a m e   =   " z h a n g s a n " ;         p u b l i c   S t r i n g   g e t N a m e ( )   {                 r e t u r n   t h i s . n a m e ;         }         p u b l i c   v o i d   s e t N a m e ( S t r i n g   v a r 1 )   {                 t h i s . n a m e   =   v a r 1 ;         }         p u b l i c   P e r s o n ( )   {                 t h i s . n a m e   =   " x i a o m i n g " ;         }         p u b l i c   P e r s o n ( S t r i n g   v a r 1 )   {                 t h i s . n a m e   =   v a r 1 ;         }
p r i n t N a m e         p u b l i c   v o i d   p r i n t N a m e ( )   {                 S y s t e m . o u t . p r i n t l n ( t h i s . n a m e ) ;         } } - - - - - -   p r i n t N a m e   s t a r t   - - - - - - x i a o m i n g - - - - - -   p r i n t N a m e     o v e r   - - - - - - p o o l . a p p e n d C l a s s P a t h ( " E : c o d e j a v a j a v a s s i s t - l e a r n c o m y 4 e r l e a r n P e r s o n . c l a s s " ) ; C t C l a s s   P e r s o n   =   p o o l . g e t ( " c o m . y 4 e r . l e a r n . P e r s o n " ) ; P e r s o n . d e f r o s t ( ) ; C t M e t h o d   p r i n t N a m e 1   =   P e r s o n . g e t D e c l a r e d M e t h o d ( " p r i n t N a m e " ,   n u l l ) ; p r i n t N a m e 1 . i n s e r t B e f o r e ( " S y s t e m . o u t . p r i n t l n ( " - - - - - -   p r i n t N a m e   s t a r t   - - - - - - " ) ; " ) ; p r i n t N a m e 1 . i n s e r t A f t e r ( " S y s t e m . o u t . p r i n t l n ( " - - - - - -   p r i n t N a m e     o v e r   - - - - - - " ) ; " ) ; O b j e c t   o   =   P e r s o n . t o C l a s s ( ) . n e w I n s t a n c e ( ) ; M e t h o d   p r i n t N a m e 2   =   o . g e t C l a s s ( ) . g e t M e t h o d ( " p r i n t N a m e " ) ; p r i n t N a m e 2 . i n v o k e ( o ,   n u l l ) ;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则