cC2 = new Cup(1);
 也就是说cC1在static中没有别初始化,所以你在使用时,必须先初始话,才可以使用

解决方案 »

  1.   

    这是TIJ charpter 4的原码:class Cup {
      Cup(int er) {
        System.out.println("Cup(" + er + ")");
      }
      void f(int er) {
        System.out.println("f(" + er + ")");
      }
    }class Cups {
      static Cup c1;
      static Cup c2;
      static {
        c1 = new Cup(1);
        c2 = new Cup(2);
      }
      Cups() {
        System.out.println("Cups()");
      }
    }public class ExplicitStatic {
      public static void main(String[] args) {
        System.out.println("Inside main()");
        Cups.c1.f(99);  // (1)
      }
      // static Cups x = new Cups();  // (2)
      // static Cups y = new Cups();  // (2) 
    } ///:~
      

  2.   

    执行结果:
    Inside main()Cup(1)Cup(2)f(99)
      

  3.   

    搂主定是打错了
    cC2 = new Cup(1);——〉cc1=new Cup(1);
    结果正确
    Inside mian()
    Cup(1)
    Cup(2)
    Fun(99)
      

  4.   

    哈哈, 明显是打错字造成的
    cC2 = new Cup(1);
    cC2 = new Cup(2);第二句应该是
    cC1 = new Cup(2);
      

  5.   

    Sorry,真的是我粗心打错了。谢谢大家