码迷,mamicode.com
首页 > 其他好文 > 详细

反射机制(一)

时间:2016-07-12 13:43:33      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:

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

基本的类定义如下:

技术分享
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 }
技术分享

反射机制(一)

标签:

原文地址:http://www.cnblogs.com/doudouxiaoye/p/5663179.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!