Class.forName()方法的疑问

class Candy {
  static { System.out.println("Loading Candy"); }
}

class Gum {
  static { System.out.println("Loading Gum"); }
}

class Cookie {
  static { System.out.println("Loading Cookie"); }
  public static void a() {
    Class c = null;
    try {
//      c = Class.forName("No14.practice7.Gum");
      c = Class.forName("Gum");
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
  }
}
public class SweetShop {
  public static void main(String[] args) {
    System.out.println("inside main");
    new Candy();
    System.out.println("After creating Candy");
    try {
      Class.forName("Gum");
    } catch(ClassNotFoundException e) {
      System.out.println("Couldn't find Gum");
    }
    System.out.println("After Class.forName(\"Gum\")");
    new Cookie();
    System.out.println("After creating Cookie");
  }
} 
/* Output:
inside main
Loading Candy
After creating Candy
Loading Gum
After Class.forName("Gum")
Loading Cookie
After creating Cookie
*///:~

如上,我的疑惑是:为什么main方法中的Class.forName()方法参数中可以使用类名的形式,而Cokie类的a方法中的Class.forName()使用类名的形式就会报ClassNofound错误,必须使用包名.类名才能通过编译呢?

https://blog.csdn.net/qq_15037231/article/details/76653743