反射已经讲了几天了. 但对放射这个概念自己还是懵懵懂懂的. 现在拿来复习一下.
何为反射?反射(Reflection)是JAVA语言开发特性之一,它允许运行中的JAVA程序对自身进行检查.并能直接操作程序的内部程序. 例如. 使用它能获得JAVA程序中各个成员的名称并显示出来.
1.我们先从Class类开始讲起.说到Class,大家并不会陌生吧.我们用JDBC操作数据库的时候.加载数据库连接的时候用到Class.forName();当一个类进行编译加载时.JVM会自动为其生成Class对象.我们可以调用Class对象获得该对象的所有成员并操作它们. 例如:

class Demo...{

public static void main(String[] args)...{
String name="xiaolong";
Class class=name.getClass();
System.out.println("getname"+class.getName);
System.out.println("获得该对象是否是接口"+class.isInterface);
//........isArry():是否是集合 isPrimetive();
}
}
2.动态加载类.class.forName()方法. 我们先来了解.动态加载有何用处. 再JAVA程序中加载类有两种方式,1自动加载.由JVM完成.对程序员是透明的. 2.手动加载.由程序员用代码完成. 自动加载的话,方便,也就是说,如果用到该类的话.JVM会自从加载这个类. 手动加载的话,则灵活性比较高,对大系统的程序部署以及版本控制都有好处. 下面我们来演示如何动态加载一个类.
package com.txl.demo

import java.lang.Package;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;


public final class Demo1 ...{

public static void main(String args[]) throws Exception ...{
Demo1 d = new Demo1();
// d.get("java.net.InetAddress");
d.get("com.yd.Demo1");
}


public void get(String args) throws Exception ...{
Class c = Class.forName(args);
Demo1 d1=(Demo1) c.newInstance();
System.out.println(c.isInterface());
System.out.println(c.getName());
System.out.println(c.getMethods().length);
Package p = c.getPackage();
System.out.println(p.getName());
int m=c.getModifiers();
System.out.println(Modifier.toString(m));
Method m1=c.getMethod("getHello",String.class);
String s=(String)m1.invoke(d1, "java爱好者");
System.out.println(s);
}

public String getHello(String name)...{
return "你好:"+name+"。这个是程序运行时动态调用的方法";
}
}
3.动态方法调用.再程序运行中间.可以动态的调用某个方法. 可以用Methord类的invoke()方法.
反射涉及到的知识很多. 以后还得继续摸索.