zoukankan      html  css  js  c++  java
  • 反射机制

    反射的基本作用:运行期,根据对象名就能获得该对象的:类型方法属性

    基本的类定义如下:

    1 class Person {
    2 String name;
    3 int age;
    4
    5 public String toString(){
    6 return"name="+name+" age="+age;
    7 }
    8 }

    一、反射的作用 

      反射的作用1:根据“字符串类型的类名”创建“实例”

    String driverName="com.mysql.jdbc.Driver"; 
    try{
           Class.forName(driverName);
           System.out.println("Mysql驱动加载成功!\n");
       }catch(ClassNotFoundException e){
           System.out.println("未能找到Mysql驱动!");
       }catch(Exception e){
           e.printStackTrace();
           System.out.println("Mysql驱动加载失败!");
       }

      反射的作用2:根据“引用”获取“类名”

    1 System.out.println("开始测试反射机制。。。。");
    2 Person person_A=new Person();
    3
    4 //反射的作用一:根据对象名获取其类名
    5 Class c1=person_A.getClass();//会返回一个Class类型的实例
    6 System.out.println("person_A的类名为:"+c1.getName());

            运行结果如下:

           

     

    二、关于Class类

         a)两个常用方法:

             1)static Class forName(String className)

                 返回类名为className的Class对象

             2)Object newInstance()

                 返回当前类的一个新实例

          b)判断某个对象是否为某个类型

               理论依据:虚拟机为每个类型管理唯一 的一个Class对象

    1 if (person_A.getClass()==Person.class){
    2 System.out.println("类型相同!");
    3 }else{
    4 System.out.println("类型不同!");
    5 }

         c)创建一个类型相同的实例

    1 try {
    2 person_A.getClass().newInstance();
    3 } catch (Exception e) {
    4 e.printStackTrace();
    5 }

          d)类型名以字符串形式给出,创建其对象

    1 String s="com.reflection.Person";
    2 try { //若要在创建对象时传递参数,必须使用Constructor类中的
    3 Object o=Class.forName(s).newInstance(); //newInstance方法
    4 } catch (Exception e) {
    5 e.printStackTrace();
    6 }
  • 相关阅读:
    vue cli3 打包到tomcat上报错问题
    前端html转pdf
    原生js上传图片遇到的坑(axios封装)
    vue slot的使用(transform动画)
    vue购物车动画效果
    关于el-select 单选与多选切换的时候报错的解决办法
    vue html属性绑定
    关于element ui滚动条使用
    css3flex布局实现商品列表 水平垂直居中 上下布局
    vue 项目 路由 router.push、 router.replace 和 router.go
  • 原文地址:https://www.cnblogs.com/edisonfeng/p/2130007.html
Copyright © 2011-2022 走看看