看看Thinking in JAVA 吧。

解决方案 »

  1.   

    相当有用的东西, rmi中用得很多 ,比如method.invoke 等于c++中的函数指针.
      Java Reflection API可以检查运行时的对象和动态更新字段与调用方法。尽管日常应用编程中时也使用反射,但更多还是用在中间件工具部分。例如,TOPLink数据库映射工具用反射将数据库值复制到JAVA对象,或将JAVA对象值复制到数据库反射使用起来并不太难而且相当强大。
     不过,在程序代码中大量使用反射操作会降低系统的性能,但JDK1。4在这方面有了明显的提高。
    举个例子给你吧:
    public Student getGradStudent(int studentNumber)
    {
       if(studentNumber >= 1 && studentNumber <=100)
       {
           //use reflection to determine if its a GradStudent
           Class c =students.elementAt(studentNumber).getClass();
           if(c.getName().equals("GradStudent"))
               return (GradStudent)
               Students.elementAt(studentNumber);
       }
       else{
                Student tempStudent = (Student) students.elementAt(studentNumber);
                
                System.out.println("Student number" + studentNumber + "," + 
                tempStudent.getName() + ", is not a graduate Student.");
                
                return null;
           }
    }
      

  2.   

    OK,我的理解就是java因为是种动态语言,它可以在运行时期动态装载类型---通过类装载器
    这点和c++不一样,c++类型在编译时期就要决定,所以它可以做很多优化,那些typelist就是这样思想的产物,包括mpl这些.....
    不知道我这样理解对否?