• 反射机制


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

    基本的类定义如下:

    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 }
  • 相关阅读:
    javascript实现根据时间段显示问候语的方法
    视觉会议收藏一
    cv的期刊和会议
    CVPR2016 Paper list
    CVPR 2017 Paper list
    关注的牛人
    cvpr2016论文
    linux命令技巧:scp多文件远程拷贝
    linux命令技巧--df -lh:查看磁盘占用情况
    spark--01编译安装spark1.3.1
  • 原文地址:https://www.cnblogs.com/edisonfeng/p/2130007.html
Copyright © 2020-2023  润新知