public class Chinese {  static Chinese ObjRef=new Chinese();   public static Chinese getInstance()
  {
    return ObjRef;//这句怎么执行?
  }  public static void main(String[] args) {
    Chinese obj=Chinese.getInstance();
  }
}

解决方案 »

  1.   

    return ObjRef; 就相当于return Chinese.ObjRef; 你哪里不清楚
      

  2.   

    还是搞不懂。。楼主是不是要写单例模式啊。ObjRef是一个指向Chinese类的对象哦。
      

  3.   

    就是返回一个Chinese对象(static Chinese ObjRef=new Chinese();)的句柄
      

  4.   

    public static void main(String[] args) {
        Chinese obj=ObjRef;
      }
      

  5.   

    里面加一个构造函数
    Chinese(){}后,貌似可以用了
      

  6.   

    这个例子有点像是单例模式,不过漏了一点,就是要声明Private的构造函数
      

  7.   

    Chinese obj=Chinese.getInstance();
    然后执行return ObjRef;
    而 ObjRef是Chinese类型的,创建新对象时,又会创建一个新的ObjRef,而新的新的ObjRef又会创建一个新的ObjRef,我觉得会创建很多个新的ObjRef,这样每个对象是只有一个ObjRef变量
      

  8.   

    晕呀,不是static的吗,当然只有一个,类初始化时创建
      

  9.   

    ObjRef不是static的么?static的变量是整个类共享的,并不会在创建新的对象时再创建个ObjRef
      

  10.   

    Chinese obj=Chinese.getInstance();
    然后执行return ObjRef;
    而 ObjRef是Chinese类型的,创建新对象时,又会创建一个新的ObjRef,而新的新的ObjRef又会创建一个新的ObjRef,我觉得会创建很多个新的ObjRef,这样每个对象是只有一个ObjRef变量
    /////////////////////////////
    你想做到什么
    ??
      

  11.   

    public static void main(String[] args) {
        Chinese obj=Chinese.getInstance();
      }
    这个地方调用了静态方法;调用静态方法意味着对类的成员变量进行初始化,static Chinese ObjRef=new Chinese();会被执行;执行完后才执行方法体中的
    return ObjRef;
      

  12.   

    在java中执行类成员变量的初始化(非初始化分配内存),会出现在两种情况下:
    1 构造函数的调用
    2 对静态成员的访问或者静态方法的访问
      

  13.   

    public class Chinese {

      {
    System.out.println("before ObjRef");
      }
      static Chinese ObjRef=new Chinese();
      {
    System.out.println("after ObjRef");
      }   public static Chinese getInstance() {
    System.out.println("enter getInstance");
        return ObjRef;
      }  public static void main(String[] args) {
        Chinese obj=Chinese.getInstance();
      }
    }
    ===输入如下:
    C:\>javac Chinese.javaC:\>java Chinese
    before ObjRef
    after ObjRef
    enter getInstance
      

  14.   

    public class Chinese {  static Chinese ObjRef=new Chinese();   public static Chinese getInstance()
      {
        return ObjRef;//这句怎么执行?
      }  public static void main(String[] args) {
        Chinese obj=Chinese.getInstance();
      }
    }
    //---------------
    1.当执行 java Chinese 时,JVM会加载Chinese 类,加载类的同时,该类的所有的static数据成员都会被初始化,也就时这句话会被执行static Chinese ObjRef=new Chinese() ,该语句执行的结果就是产生了一个类的对象并且把他的引用赋值给static变量ObjRef。
    2.接下来执行Chinese obj=Chinese.getInstance() 他把上面生成的那个对象的引用赋值给obj
      

  15.   

    楼主并没有搞清一个问题:
    那就是如果一个类声明了一个静态成员变量,不管这个类产生了多少个对象,这个静态变量都只有一个.相当于对于这些对象来说的全局变量.这些对象公用这个静态变量.所以不会出现产生"创建很多个新的ObjRef"的情况