2013年6月26日 星期三 1时01分42秒
package chapter14.typeinfo;
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 class SweetShop {
public static void main(String[] args){
System.out.println("inside main");
new Candy();
System.out.println("after creading 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");
}
}
/*inside main
loading Candy
after creading candy
couldn't find Gum
After Class.forName("Gum")
loading Cookie
After creating cookie*/
从输出结果来看,代码Class.forName("Gum"); 中Gum类没有被JVM加载到。 望指教,为什么这个类加载不了呢? 万分感谢。。。。
不好意思,原因查到了,包名应写完整。
正确的写法应该是:
Class.forName("chapter14.typeinfo.Gum");
分享到:
相关推荐
Java中的`Class.forName()`方法是一个非常关键的工具,主要用于动态加载类。它的作用在于根据给定的类全名(包括包名)返回对应的`Class`对象。`Class`对象是Java反射机制的基础,它代表着运行时的类信息,可以通过...
- **灵活性**:`forName()`允许动态加载类,而`new`是在编译时期就已经确定了类。 - **创建方式**:`new`直接创建对象,而`forName()`和`newInstance()`则通过类加载机制创建对象,提供了更多的灵活性,如在运行时...
在Java编程语言中,"class literal"、"instance.getClass()" 和 "Class.forName(String className)" 是三个与类加载和类型查询紧密相关的概念。了解这些概念对于深入理解Java运行时的类加载机制至关重要。 首先,让...
在Java的反射机制中,`Class.forName`和`ClassLoader`都是关键组件,它们在程序运行时动态加载类和实现类的实例化方面扮演着重要角色。理解这两个概念及其区别是深入掌握Java反射的重要一步。 首先,`Class.forName...
在Java编程语言中,`Class.forName()`方法是一个非常重要的功能,它主要用于动态加载类到Java虚拟机(JVM)中。这个方法的主要作用是根据给定的全限定类名(包括包名和类名)来查找并加载对应的类。下面我们将深入...
Class.forName()方法的用法可以分为两种,一种是使用Class.forName()方法加载类,然后使用newInstance()方法实例化该类,另一种是使用new关键字实例化类。两种方法的效果是一样的,但是它们的实现机制不同。Class....
"Java中通过Class类获取Class对象的方法详解" ...* 动态加载类:通过Class类中的forName()方法可以动态加载类,实现动态加载类的功能。 * 依赖注入:通过Class对象可以获取类的信息,用于依赖注入机制。
2. **通过`Class.forName()`方法动态加载**:可以在运行时动态地加载类。 3. **通过`ClassLoader.loadClass()`方法动态加载**:提供了更多的灵活性,可以根据不同的需求加载不同的类。 这三种方式各有特点,具体...
Java 中类名.class, class.forName(), getClass() 的区别 Java 中有三种方式可以获取 Class 对象,即类名.class、class.forName() 和 getClass()。这些方法都可以获取 Class 对象,但是在获取 Class 对象的过程中,...
总之,`Class.forName()` 主要用于动态加载类,`newInstance()` 用于通过无参构造器创建类的实例,而 `new` 关键字则是直接创建对象,提供了更多构造器选择的灵活性。理解它们的区别和应用场景,对于编写高效、健壮...
- **Class.forName()**:加载指定的JDBC驱动类。 - **newInstance()**:创建一个实例对象。 - **getConnection()**:使用URL、用户名和密码获取数据库连接。 - **URL格式**:`jdbc:oracle:thin:@主机地址:端口号:...
`Class.forName` 是 Java 反射 API 中的一个重要方法,主要用于动态加载类。该方法的主要作用是根据提供的全限定类名来加载并返回对应的 `Class` 对象。在 Java 开发过程中,当我们需要根据用户的输入或者配置文件中...
- **Class.forName()**:用于加载特定的JDBC驱动类。 - **DriverManager.getConnection()**:用于建立到数据库的连接。 - **URL**:指定数据库的位置以及连接参数。 - **Connection**:表示与数据库之间的连接。 ##...
`Class.forName()`方法内部调用了本地方法`forName0`,并传入了一个布尔参数`initialize`,默认值为`true`,表示在加载类之后执行初始化。初始化阶段不仅包括对类变量的赋值,还包括执行静态初始化块,对于父类也是...
在Java JDBC编程中,`Class.forName()` 方法起着至关重要的作用。它的主要任务是动态加载指定的类并执行其实例的静态初始化块。在上下文中,`Class.forName()` 被用来加载数据库驱动,比如MySQL的`...
- 使用`Class.forName(String className)`或`Class.forName(String className, boolean initialize, ClassLoader loader)`方法显式加载类。 - 使用`ClassLoader.loadClass(String name)`方法显式加载类。 其中,`...
Java中最常见的动态加载类的方式是使用`Class.forName()`方法。该方法接收一个字符串参数,即类的全限定名,返回表示此类的`Class`对象。通过这个`Class`对象,可以进一步调用其`newInstance()`方法来创建该类的实例...