1、要对哪个类使用反射就创建哪个类的类模板
2、类名点class
3、 对象点getClass() 调用Object的getClass()方法
4、Class.forName(类的全限定名) 参数为一个类的全限定名即包名点类名 适合用于不知道类名的情况下即将全限定名放入外部如配置文件 通过解析后传入
在大的项目中,由于有多个业务类,而我们不知道用户要用到哪个类,所以反射很好的为我们解决了这个难题,通过客户端传入的特定字符串,用反射动态的创建对象。
spring管理项目,通过配置文件,实例化对象,原理反射
在**公司实习,当时做一款基于Android平台手机游戏(纸牌游戏),用BitmapFactory类对各种纸牌逐一进行加载。
String[] type = { "clubs", "diamonds", "hearts", "spades" };
String[] num = { "ace", "two", "three", "four", "five", "six", "seven",
"eight", "nine", "ten", "jack", "queen", "king" };
cardImages = new Bitmap[6][13];
try { // 四个花色的牌
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < type.length; j++) {
Field field = R.drawable.class.getField("card_" + num[i] + "_"
+ type[j]);
cardImages[j][i] = BitmapFactory.decodeResource(
getResources(), field.getInt(R.drawable.class));
}
}
} catch (Exception e) {
e.printStackTrace();
}
要想进行反射就必须依靠Class这个类,当JVM在装载每一个类或者Java接口的时候,会为每一个类或接口创建一个代表它本省的java.lang.Class类的实例。所以可以通过Class类得到一个类或接口的完整信息。比如:
-->Package 类对应着该类或接口所在的包
-->Constructor 类对应着类中的构造方法
-->Method 类对应着类中的普通方法
-->Field 类对应着类或接口中的字段