`

new 和Class.forName()有什么区别?

 
阅读更多

class.forName()方法是java提供的手动加载类的接口之一,其作用就是初始化参数指定的类,并且返回此类对应的Class实例。

 

new 和Class.forName()有什么区别?

首先,newInstance( )是一个方法,而new是一个关键字;

其次,Class下的newInstance()的使用有局限,因为它生成对象只能调用无参的构造函数,而使用 new关键字生成对象没有这个限制。

 

从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:

1、这个类已经加载;

2、这个类已经连接了。

 

 

 

 

分享到:
评论

相关推荐

    Class.forName

    使用`Class.forName()`的一个常见场景是,当你有一个字符串变量,代表一个类的全名,但你不知道具体是什么类,这时可以使用`forName()`动态地加载这个类。例如: ```java String className = "com.example.MyClass"...

    class literal & instance.getClass() & Class.forName(String className)

    在Java编程语言中,"class literal"、"instance.getClass()" 和 "Class.forName(String className)" 是三个与类加载和类型查询紧密相关的概念。了解这些概念对于深入理解Java运行时的类加载机制至关重要。 首先,让...

    Class.forName()_newInstance()_New_三者区别

    在Java编程中,`Class.forName()`, `newInstance()` 和 `new` 关键字都是与对象创建和类加载紧密相关的概念,但它们各自有着不同的用途和限制。 首先,`Class.forName("className")` 是一个静态方法,它用于在运行...

    Java Class.forName()用法和newInstance()方法原理解析

    Java Class.forName()用法和newInstance()方法原理解析 Class.forName()方法是Java语言中的一种Class加载机制,它可以根据类名将对应的类加载到JVM中,同时也可以实例化该类。Class.forName()方法的主要功能是要求...

    java中Class.forName的作用浅谈

    下面我们将深入探讨`Class.forName()`的用途、工作原理以及与`new`关键字的区别。 一、`Class.forName()`的用途 1. **动态加载类**:当需要在程序运行时根据某些条件或用户输入来决定加载哪个类时,`Class.forName...

    Classfor的用法

    `Class.forName` 主要有以下几种重载形式: 1. **单参数版本**:`Class.forName(String className)` - 这个方法使用当前线程的上下文类加载器(如果没有设置,则使用系统的应用类加载器)来加载类,并且会初始化...

    浅谈java中类名.class, class.forName(), getClass()的区别

    Java 中有三种方式可以获取 Class 对象,即类名.class、class.forName() 和 getClass()。这些方法都可以获取 Class 对象,但是在获取 Class 对象的过程中,有一些关键的区别。 第一种方式:类名.class 类名.class ...

    liuwei1989#study-guide#17-Class.forName和classloader的区别1

    并且只有调用了newInstance()方法采用调用构造函数,创建类的对象看下Class.forName()源码//Class.forName(String c

    jdbc驱动程序实例

    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // orcl为数据库的SID String user = "test"; String password = "test"; Connection ...

    jdbc中class.forname的作用

    在Java JDBC编程中,`Class.forName()` 方法起着至关重要的作用。它的主要任务是动态加载指定的类并执行其实例的静态初始化块。在上下文中,`Class.forName()` 被用来加载数据库驱动,比如MySQL的`...

    浅析使用JDBC操作MySQL需要添加Class.forName("com.mysql.jdbc.Driver")

    当我们使用JDBC操作MySQL数据库时,通常会在代码中看到`Class.forName("com.mysql.jdbc.Driver")`这一行,这行代码的作用是至关重要的,但很多人可能并不清楚为什么要这样做。本文将深入探讨这个问题,以及其背后的...

    forname实现工程内部反射机制

    总之,通过`Class.forName()`方法,我们可以实现在工程内部的反射机制,动态地访问和操作任何已知类,不论它们位于哪个包中。这为我们的代码提供了更高的灵活性和扩展性,但也需要注意反射可能会带来的安全风险和...

    java于各种数据库连接额语句

    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // orcl 为数据库SID String user = "test"; String password = "test"; ...

    Java中通过Class类获取Class对象的方法详解

    通过Class类可以获取Class对象,获取Class对象有三种方式:通过Object类的getClass()方法、通过类名.class获取Class对象、通过Class类中的forName()方法。每种方式都有其特点和应用场景,掌握这些方式可以帮助开发者...

    jdbc笔记整理 sql

    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); //Sql Server7.0/2000 数据库 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); //DB2 数据库 Class.froName(...

    Java反射简单例子

    首先,我们从`Class.forName()`方法开始。这是Java反射机制的一个关键入口点,它用于根据全限定类名(包括包名)加载类。例如,如果我们有一个名为`Robot`的类,我们可以使用以下代码加载它: ```java Class<?> ...

    excel的jdbc驱动

    Class.forName(driver).newInstance(); Connection con = DriverManager.getConnection(url); Statement stm = con.createStatement(); String sql = "select * from sheet"; for(int i=0;i;i++){ ResultSet ...

    读取数据库信息到xml

    //Class.forName("oracle.jdbc.driver.OracleDriver");//oracle数据库 Class.forName("com.mysql.jdbc.Driver");//mysql数据库 conn=DriverManager.getConnection("jdbc:mysql://192.168.1.109/cpsad?user=root&...

    最简单java 反射原理示例

    3. 在主程序中,首先通过`Class.forName()`获取`Person`类的Class对象。 4. 使用`newInstance()`创建`Person`对象,或使用`getConstructor()`和`newInstance()`组合创建带参数的实例。 5. 通过`getMethod()`获取指定...

    java中的Class类和反射.docx

    - 使用`Class.forName("类的全限定名")`,例如`Class.forName("java.lang.String")`。 #### 二、Class类的特性 `Class`类自身并没有公共的构造方法,它是由JVM自动创建的。这意味着我们无法直接实例化`Class`对象...

Global site tag (gtag.js) - Google Analytics