java知识那么多,怎么学好呢?----记作用、找核心类、突破口、见名知意
2022/2/24 17:21:58
本文主要是介绍java知识那么多,怎么学好呢?----记作用、找核心类、突破口、见名知意,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
✿ 这里咱以学习内省机制和反射为例
1、学习新知识点----记住作用(先了解是什么、和前面的知识点有什么联系、作用)
(1)先了解什么是反射?【简单理解和比较官方的描述】
-
简单理解:反射,就是得到类(这种对象的)类【java.lang.Class】,得到类的元数据的过程。
-
比较官方的描述:在运行时期,动态地区获取某个类中的成员的信息(构造器、方法、字段、内部类、接口、父类等等)。
(1)先了解什么是内省?
-
简单理解:用反射实现的,用来获取javabean的信息的机制。
-
比较官方的描述:sun公司针对特殊的类---javaBean推出的技术。内省机制就是用来获取javabean的信息的。
(2)内省机制和反射的联系:
其实内省机制也是通过反射来实现的,而反射是对一切类都适合去动态获取类的信息,而内省机制是sun公司针对特殊的类---javaBean推出的技术。内省机制就是用来获取javabean的信息的。
(3)反射的作用是什么?
- 得到类(这种对象的)类【java.lang.Class】,即得到类的信息(
构造器、方法、字段
、内部类、接口、父类等等)。
(3)内省的作用是什么?
- 用来获取javabean的信息(
属性、方法
、事件)
2、学习新知识点----抓住核心类、突破口、见名知意
-
先关注核心类所在的包,例如反射Class在lang包;内省Introspector在beans包
■ 例如反射的核心类----Class【作用结合见名知意,拥有类有关的一切信息(构造器、方法、字段
、内部类、接口、父类等等)】
■ 例如内省机制的核心类---Introspector【作用结合见名知意,拥有javaBean有关的一切信息(属性、方法
、事件)】
2-2、反射---操作构造器(方法、字段是同理可得的)
Class
(核心类、学习反射机制的突破口、学习操作构造器的学习入口)---操作g构造器
-
第一步就是先得到该构造器所在类的字节码对象(要获取一个类的构造器,需要将该类先加载进虚拟机):
-
Class类中的静态方法forName("类的全限定名称")获取Class对象【字节码对象】
-
在Class类中找到获取构造器的方法【在突破口中:
得到构造器对象
】
-
-
第二个突破口是拥有构造器有关的一切的Constructor:【在突破口中:
得到创建对象实例的方法
】-
构造器最大作用:
创建对象
-
✿ 反射机制操作构造器的代码如下:
//类中的构造器可以被外界访问同时没有参数,直接使用Class类的newInstance方法创建对象 Class<Person> clazz = Person.class; Constructor<Person> con= clazz.getConstructor(); con.newInstance(); System.out.println("========================"); //反射:调用构造器的方法创建对象[无参构造器] clazz = Person.class; con= clazz.getConstructor(String.class); con.newInstance("shan"); System.out.println("========================"); //反射:调用构造器的方法创建对象[无参构造器] clazz = Person.class; con= clazz.getDeclaredConstructor(String.class, int.class); //设置当前的构造器【私有的】可以访问 con.setAccessible(true); con.newInstance("shan", 10);
2-2、内省---操作javaBean
Introspector
(核心类、学习内省机制的突破口、学习操作javaBean的学习入口)---操作javaBean
-
第一步就是先得到该javaBean:【在突破口中:
得到javaBean的描述对象BeanInfo对象
】- 方法getBeanInfo的参数是该javaBean的字节码,结果是得到javaBean的信息---BeanInfo对象(javaBean的描述对象)
-
第二个突破口拥有javaBean的一切的BeanInfo:【在突破口中:
得到javaBean的属性描述器PropertyDescriptor
】- 方法getPropertyDescriptors(),结果是得到javaBean的属性信息---PropertyDescriptor属性数组对象(javaBean的属性描述器对象)
-
第三个突破口拥有javaBean的属性的一切的PropertyDescriptor:【在突破口中:
得到关于属性的操作
】- 属性描述器是数组----遍历
✿ 内省机制操作javaBean的属性代码如下:
@Test public void testIntrospector() throws Exception { //1、通过突破口(核心类Introspector)获取javaBean描述对象BeanInfo BeanInfo beanInfo = Introspector.getBeanInfo(Person.class,Object.class); //2、获取javaBean中的属性描述器 PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors(); //创建一个Person对象 Person person = new Person(); for (PropertyDescriptor pd : pds) {//遍历数组描述器数组 //3-1、获取当前的属性的属性名 System.out.println("当前属性的属性名是:" +pd.getName()); System.out.println("当前属性的getter方法是:" +pd.getReadMethod()); System.out.println("当前属性的setter方法是:" +pd.getWriteMethod()); if("name".equals(pd.getName())) {//若当前属性名是name【不能直接使用setName方法,因为反射的时候并不知道是哪个具体的方法】 Method setter = pd.getWriteMethod();//3-2、获取setter方法 setter.invoke(person, "shan");//设置当前person对象的name值为shan } } }
这篇关于java知识那么多,怎么学好呢?----记作用、找核心类、突破口、见名知意的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解