1、认识Class类
任何一个类都是Class类的实例对象,这个实例对象有三种表示方式。
1 /*java 反射机制*/ 2 // 获取类的方法 3 UserDao userDao = new UserDao(); 4 Class c = UserDao.class; // 1、知道类名 使用.class获取类 5 Class d = userDao.getClass(); // 2、知道对象 使用.getClass()获取类 6 Class m = null; // 3、知道类 使用class.forName("")获取类 7 try { 8 m = Class.forName("com.description.dao.UserDao"); 9 } catch (ClassNotFoundException e) { 10 e.printStackTrace(); 11 } 12 13 System.out.println("c d是否相等 : " + (c==d)); 14 System.out.println("c m是否相等 : " + (c==m)); 15 16 try { 17 UserDao ud = (UserDao) c.newInstance(); // 通过反射实例化一个对象,前提是UserDao必须有一个默认的无参构造方法 18 } catch (InstantiationException e) { 19 e.printStackTrace(); 20 } catch (IllegalAccessException e) { 21 e.printStackTrace(); 22 }
2、动态加载类实例
新建四个类,一个Software接口,另外新建两个类继承该接口。
Software.java
1 package com.hua.reflect; 2 3 /** 4 * Created by 华天 on 2016/06/06. 5 */ 6 public interface Software { 7 public void show(); 8 }