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 }
  • 相关阅读:
    轻量级数据库sqlite的使用
    Integer引发的思考
    css限制显示行数
    数据库 chapter 17 数据仓库与联机分析处理技术
    数据库 chapter 15 对象关系数据库系统
    数据库 chapter 16 XML数据库
    数据库 chapter 14 分布式数据库系统
    数据库 chapter 11 并发控制
    数据库 chapter 12 数据库管理系统
    数据库 chapter 13 数据库技术新发展
  • 原文地址:https://www.cnblogs.com/edisonfeng/p/2130007.html
Copyright © 2011-2022 走看看