比如:
               .....
  Class c=Class.forName(args[0]); /*c 没有用NEW实例化*/
  Constructor[] cons=c.getDeclaredConstructors[];/* cons 没有用NEW实例化*/
              ......
为什么在创建c 和 cons 时,没用NEW实例化?难不成在forName 和 getDeclaredConstructor 中用了?
那 
    point pt=new point();
    Class c1= pt.getClass();
中的c1也是在pt.getClass中实例化了?
岂不是每个Class的方法中都有NEW 实例化?

解决方案 »

  1.   

    这个是java 的RTTI机制,具体的你可以看下《thinking in java》的介绍。
      

  2.   

    Class.forName()
    具体是怎么实现的我们并不知道
    因为他最终调用了本地方法(native)
    在这些本地方法中应该就没有new这个概念了
      

  3.   


             因为Class的静态方法forName返回的就已经是一个Class
      

  4.   

    反射
    工厂
    克隆
    new 
    都可以产生对像.
      

  5.   

    http://www.bianceng.cn/webkf/Java/jc/200705/1638.htm
    java的RTTI机制介绍...
      

  6.   

    静态工厂方法:创建类的实例的最常见的方式是用new语句调用类的构造方法。在这种情况下,程序可以创建类的任意多个实例,每执行一条new语句,都会导致Java虚拟机的堆区中产生一个新的对象。假如类需要进一步封装创建自身实例的细节,并且控制自身实例的数目,那么可以提供静态工厂方法。
    具体请参阅:http://book.csdn.net/bookfiles/49/100491554.shtml
      

  7.   

    Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段Class实例应该是Class内部new的。
      

  8.   

    每一个被加载的类在堆上都有一个对应的Class类的实例.
    比如forName("A"); 会查找是否有个Class类的实例A.Class已被创建,如果没有则会创建这个实例.具体怎么创建的,就像zdjray(PubSoft)说的用的是个本地方法.
    而getClass()也是为了得到这个实例的引用.也是个本地方法
    至于getDeclaredConstructors,看一下源代码
      

  9.   

    我觉得楼主有个误区,不是new就可以实例化对象一个简单的例子,单例模式:就是通过静态方法getInstance();来实例化对象
    class A{
      private static A a1=new a();
      public static A getInstance(){
       return a1;  
     }
      public static void main(String []args){
       A a1=A.getInstance();
     }
    }
      

  10.   

    建议看一下JAVA反射机制 
    可以先在JAVA API中看看Class类是干什么的
      

  11.   


    我觉得楼主有个误区,不是new就可以实例化对象一个简单的例子,单例模式:就是通过静态方法getInstance();来实例化对象
    class A{
      private static A a1=new a();
      public static A getInstance(){
       return a1;  
     }
      public static void main(String []args){
       A a1=A.getInstance();
     }
    }
    ________________________________________对于楼上的.
    我觉得,A a1=A.getInstance(); 调用的是他自已的方法,而和对像实例化扯不上关系吧.
      

  12.   


    建议看一下JAVA反射机制 
    可以先在JAVA API中看看Class类是干什么的
    ---------------------------------
    对于楼上的.
    我不知道Class类是干什么的,那还问它forName方法做什么?
    有点不知所云吧.