Files
springboot-scaffold/target/classes/com/example/scaffold/learning/ReflectionLearningController.class

41 lines
7.7 KiB
Plaintext
Raw Normal View History

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=W
 java/lang/Object<init>()VwhatIsReflection
0运行时检查类、字段、方法、构造器 运行时动态创建对象$运行时调用方法、读写字段6Spring / MyBatis / Jackson 等框架大量依赖反射  java/util/ListofZ(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List; whyItMattersE理解框架为什么能自动装配、自动绑定、自动序列化8理解代理、注解扫描、Bean 创建背后的机制-理解反射带来的灵活性与性能成本  !H(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List; #$% & java/util/MapY(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;(<com/example/scaffold/learning/reflection/ReflectionLabTarget*java/util/LinkedHashMap
)- className
/01 23java/lang/ClassgetName()Ljava/lang/String; #5 67put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;9
simpleName
/; <3 getSimpleName> constructors
/@ ABgetDeclaredConstructors"()[Ljava/lang/reflect/Constructor;
DEF GHjava/util/Arraysstream.([Ljava/lang/Object;)Ljava/util/stream/Stream;J KLapply()Ljava/util/function/Function; NOP QRjava/util/stream/Streammap8(Ljava/util/function/Function;)Ljava/util/stream/Stream; NT UVtoList()Ljava/util/List;Xfields
/Z [\getDeclaredFields()[Ljava/lang/reflect/Field;J_methods
/a bcgetDeclaredMethods()[Ljava/lang/reflect/Method;Jfjava/lang/String hij kljava/lang/IntegerTYPELjava/lang/Class;
/n opgetDeclaredConstructor3([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
hr stvalueOf(I)Ljava/lang/Integer;
vwx yzjava/lang/reflect/Constructor newInstance'([Ljava/lang/Object;)Ljava/lang/Object;|instance
~ <00>getClass()Ljava/lang/Class;<00>identityHashCode
<00><00><00> <00><00>java/lang/System(Ljava/lang/Object;)I<00>name
'0<00>count
'<00> <00><00>getCount()I<00>message<00>-通过反射构造器动态创建对象成功 #<00> <00><00>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
'
/<00> <00><00>getDeclaredField-(Ljava/lang/String;)Ljava/lang/reflect/Field;
<00><00><00> <00><00>java/lang/reflect/Field setAccessible(Z)V
<00><00> <00><00>get&(Ljava/lang/Object;)Ljava/lang/Object;
<00><00> <00><00>set'(Ljava/lang/Object;Ljava/lang/Object;)V<00>field
<00>0<00>before<00>after<00>!私有字段已通过反射修改 #<00> <00><00>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;<00>Spring
'<00> <00>(Ljava/lang/String;I)V<00>greet
/<00> <00><00>getDeclaredMethod@(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
<00><00><00> <00><00>java/lang/reflect/Methodinvoke9(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;<00> secretFormula
<00><00><00>debug<00>
staticInfo<00>publicMethodResult<00>privateMethodResult<00>staticMethodResult<00>B公开方法、私有方法、静态方法都已通过反射调用<00>spring<00> 扫描注解<00> 创建 Bean<00> 依赖注入<00>调用生命周期方法<00>jackson<00> 读取字段<00>调用 getter/setter<00>对象序列化/反序列化<00>mybatis<00>结果集映射到对象<00>动态代理 Mapper 接口 <00> <00>6(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;<00>warning<00>W反射很强大但要理解它的性能成本、可读性成本和封装破坏风险<00>:com/example/scaffold/learning/ReflectionLearningControllerCodeLineNumberTableLocalVariableTablethis<Lcom/example/scaffold/learning/ReflectionLearningController;overview()Ljava/util/Map; Signature7()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;RuntimeVisibleAnnotations4Lorg/springframework/web/bind/annotation/GetMapping;value /overview classInfoclazzresultLjava/util/Map;LocalVariableTypeTableLjava/lang/Class<*>;5Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
Exceptionsjava/lang/Exception /class-info instantiate$(Ljava/lang/String;I)Ljava/util/Map;Ljava/lang/String;I constructorLjava/lang/reflect/Constructor;obj>Lcom/example/scaffold/learning/reflection/ReflectionLabTarget;_Ljava/lang/reflect/Constructor<Lcom/example/scaffold/learning/reflection/ReflectionLabTarget;>;MethodParametersJ(Ljava/lang/String;I)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>; /instantiate"RuntimeVisibleParameterAnnotations6Lorg/springframework/web/bind/annotation/RequestParam; defaultValueref-user5 fieldAccess#(Ljava/lang/String;)Ljava/util/Map;Ljava/lang/reflect/Field;Ljava/lang/Object;I(Ljava/lang/String;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>; /field-accesschanged-by-reflection
methodCallprefix publicMethodLjava/lang/reflect/Method; publicResult privateMethod privateResult staticMethod staticResult /method-call你好whyFrameworksUseIt/why-frameworks-use-it
SourceFile!ReflectionLearningController.java8Lorg/springframework/web/bind/annotation/RestController;8Lorg/springframework/web/bind/annotation/RequestMapping;/api/learning/reflectionBootstrapMethods<00>=
v> ?3toStringA3(Ljava/lang/reflect/Constructor;)Ljava/lang/String;C
<00>>E-(Ljava/lang/reflect/Field;)Ljava/lang/String;G
<00>>I.(Ljava/lang/reflect/Method;)Ljava/lang/String;K
LMN OP"java/lang/invoke/LambdaMetafactory metafactory<00>(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; InnerClassesS%java/lang/invoke/MethodHandles$LookupUjava/lang/invoke/MethodHandlesLookup!<00><00>/*<2A><01><00><00> <00><00><00><00><00>R   <0F><1D><1F>"<22><00>
<00> <00><00><00>[s<00><00><00><00>'L<>)Y<>+M,,+<2B>.<2E>4W,8+<2B>:<3A>4W,=+<2B>?<3F>C<>I<00>M<00>S<00>4W,W+<2B>Y<>C<>]<00>M<00>S<00>4W,^+<2B>`<60>C<>d<00>M<00>S<00>4W,<2C><00>"() *+%,D-c.<00>/<00> <00><00><00><00>l y <00>
 y   <00>[s<00><00>
Z'<05>/YeSY<04>gS<67>mN-<05>Y+SY<1C>qS<71>u<>':{<04>}<7D>.<12><04><00><>q<12><04><00><12><04><00><>q<12><12><><00><><00>"56-718;9E:L;V7<00>4Z<00><00>Z<00>Z<00>E-- E   <00><00><00>[sss !"<00><00>?<3F>'Y<><00>M'<12><><00>N-<04><00>-,<2C><00>:-,+<2B><00>-,<2C><00>:<12>-<2D><00><12><12><12><12><><00><><00>& BCDEF"G)H,I;H<00>>?<00><00>?7/<00>##<00>$)<00>$  <00>%[s& s'("<00> <00><>'Y<12><05><00>M'<12><04>/YeS<65><00>N-,<04>Y+S<><00>:'<12><04>/YeS<65><00>:<04><00>,<04>Y<12>S<EFBFBD><00>:'<12><03>/<2F><00>:<03><02><00>:<12><12><12><12>ո<00><><00>& R ST+V=WCXTZa[m]<00>\ <00><00><00><00>) ve*++V,$=D-+T-.$a /+m0$  )<00>%[s1 s23<00><00>c)<12><12><12><12>߸<12><12><12><12><><12><12><12><><00><12><12><><00><><00>g
hij%g<00> )<00><00><00>[s45678[s9: J;<@J;BDJ;FHQ
RTV