反射的基本作用:运行期,根据对象名就能获得该对象的:类型、方法、属性
基本的类定义如下:
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 }
时间: 2024-11-05 16:26:58