java反射问题

1、初识class:

编写源代码.java >>> 编译.class >>> 类加载器ClassLoader >>> 字节码文件

java中获得类的对象的方法

Class是一个描述类的类

获得Class对象的方法:

   

2、反射的概念

是在运行期,对任意一个类,都能知道这个类的属性和方法;

对任意一个对象,都能调用这个对象的属性和方法;

3、反射的作用

可以是程序访问JVM中类的信息

获取类装载的属性、方法、以及构造方法

实际应用:

1、跳过编译器检查

2、在框架中使用

3、简单工厂模式的应用

   

4、反射相关的类

  • class 描述类的类

       

  • mehtod 描述类的方法

    class中的method操作方法都为 方法名.invoke(obj,param),如果是静态属性则将obj改为null.没有param可不写。

   

  • Field 成员变量

    //父类所有的属性

    fields = dogClass.getSuperclass().getDeclaredFields();

       

       

       

    class中的属性操作方法都为 属性名.set(obj,value),如果是静态属性则将obj改为null.

       

  • Constructor 构造方法

       

  • Array 数组

       

  • Modifuer 类成员修饰符

       

5、反射的优点:

提高了java程序的灵活性和拓展性,降低了了耦合性,无需提前硬编码目标类

其它一些常用语言 C++ Pascal都不具备

应用领域广:软件测试、EJBjavaBean包括框架也是用了很多反射

6、反射的缺点

使用反射相对要慢于直接编码,非拓展性要求很高的框架不建议使用

维护很复杂,因为看不到编码逻辑

7、创建对象的三种方式

①、通过new 关键字

②、通过反射Class.newInstance/反射的constructor.newInstructor

③、clone关键字,需要被克隆类实现Cloneable接口

④、通过ObjectInputStream readObject 也可以,对象反序列化

   

   

posted @ 2020-10-30 00:06  黑质白章  阅读(109)  评论(0编辑  收藏  举报