我目前在学习反射机制.看了三分之一在学习的过程中...有个奇怪的想法先定义一个接口
public interface osos {
public void name() ;
public void sss();
}
接口实现类public class main implements osos{ @Override
public void name() {
// TODO Auto-generated method stub
System.out.println("sss");
}
@Override
public void sss() {
// TODO Auto-generated method stub
System.out.println("ddd");
}
}
public static void main(String[] args) {
osos objOsos=null;
Class<?> clsClass;
try {
clsClass = Class.forName("XML.main") ;
objOsos = (osos) clsClass.newInstance();
objOsos.name();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}然就能直接使用里面的方法...我想问下大家这种到底算不算是反射???

解决方案 »

  1.   

    反射不是这么用的啊!通常能不用反射就可以执行的代码就不要用反射,因为开销比较大,楼主可以参考http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/reflect/index.html
      

  2.   

    这只不过是把一个class文件加载到jvm里,然后用Class类得到它,再创建一个它的实例。你可以说他是反射,也可以说不是。没有一个非常死的界限规定。
      

  3.   

    楼主这是反射,其实反射总结就一点,通过名字(字符串)去产生实际的类,或根据方法的名字去调用方法,等等。Spring的IOC,AOP基本都是反射实现的。