在教材上看到的,try
{
Class<?> cs=Class.forName("signalcanvas");
signal=(signalcanvas)cs.newInstance();
add(signal,BorderLayout.CENTER);
}
catch(Exception e)
{
add(new Label("你还没有编写Signalcanvas类"),BorderLayout.CENTER);
}这和signal=new signalcanvas()有什么区别,signalcanvas 是我自己声明的类
然后我按照书上列的代码敲了一遍,上面这段代码跟本生成不了一个signalcanvas对象,直接输出你_还没有编写Signalcanvas类
这又是怎么回事?

解决方案 »

  1.   

    我是集合了一个包,forName("signalcanvas");这里参数要带上包的名字?
      

  2.   

    反射最大的好处估计就是解耦吧。
    你利用反射机制,可以不用实例化一个对象。
    比如楼主的一个例子
    Class<?> cs=Class.forName("signalcanvas");
    这样你就可以得到signalcanvas类的引用,无需实例化。
    spring的aop和注入依靠的都是反射。