`
liugang594
  • 浏览: 994340 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Class.forName()与TypeName.class

阅读更多

得到一个类的class对象,通常有以下两种方法:

  • Class.forName(className)
  • ClassName.class

他们之间有一些区别,通常Class.forName(className)是比较老式的一种用法。通常使用ClassName.class。下面是他们的一些比较:

  1. Class.forName(className)需要给出类名的限定名;相对来说ClassName.class就可以简单了。
  2. Class.forName(className)中,类名容易出现拼写错误;而ClassName.class直接强发编译错误。
  3. Class.forName(className)通常用于动态加载类,在找不着类时就会发出一个检测异常,所以需要用以一个try块去捕获异常。相对于来ClassName.class是一个类没有发现错误,在编译期间就可以知道错误的发生。
  4. 最后Class.forName(className)不能用于简单类型,例如void等等。

不过相对来说,Class.forName(className)在不知道类名或者类名是动态的情况下,就很方便了。

分享到:
评论

相关推荐

    booktypemanage.rar_access_java access 书

    这通常在代码中通过Class.forName()方法加载,例如: ```java Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ``` 接下来,使用DriverManager.getConnection()方法建立数据库连接,提供数据库URL、用户名和密码...

    SystemVerilog Reference Manual 3.1a(中英文版)+最新SV IEEE 标准

    3.12 Class...............................................................................................................................................26 3.13 Singular and aggregate types .............

    Google C++ Style Guide(Google C++编程规范)高清PDF

    The main reason for making a virtual function inline is to place its definition in the class, either for convenience or to document its behavior, e.g., for accessors and mutators. The -inl.h Files...

    jython的用法及学习文档

    Class<?> JavaInterface = Class.forName(interfaceName); javaObject = interpreter.get(instanceName).__tojava__(JavaInterface); } catch (ClassNotFoundException ex) { ex.printStackTrace(); // Add ...

    C++ 备忘单-.pdf

    - 类模板:`template<typename T> class ClassName { ... };` 3. **Lambda 表达式**: - 匿名函数:`[]() { ... };` 4. **类型推断**: - `auto` 关键字用于自动类型推断 5. **范围 for 循环**: - `for ...

    Java-项目开发实例-图书信息管理系统开发文档及源码.pdf

    通过`Class.forName()`加载数据库驱动,然后使用`DriverManager.getConnection()`建立连接。`executeQuery()`方法用于执行SQL查询,返回结果集`ResultSet`。 4. **对象模型**: - `com.zhang.model`包中的`...

    Elasticsearch的java api使用.pdf

    for (Map.Entry, Object> entry : data.entrySet()) { builder.field(entry.getKey(), entry.getValue()); } builder.endObject(); IndexResponse response = client.prepareIndex(indexName, typeName, id) ...

    geojson-geometry-shp格式相互转化总结

    sds.setCharset(Charset.forName("UTF-8")); String typeName = sds.getTypeNames()[0]; // 输出gis.osm_buildings_a_free_1 // 更改表名以避免特殊字符 typeName = typeName.replace(".", "_e"); // 创建...

    java项目开发实例图书信息管理系统开发文档及源码.doc.pdf

    - Dao.java 类中包含了数据库连接的静态变量和方法,如`Class.forName()`用于加载数据库驱动,`DriverManager.getConnection()`用于建立连接。此外,还提供了执行查询的静态方法`executeQuery(String sql)`,用于...

    java_图书管理系统

    它包含了数据库驱动的配置,如数据库URL、用户名、密码等,并通过`Class.forName()`加载数据库驱动,`DriverManager.getConnection()`建立数据库连接。`Dao`类还包含执行查询、更新等数据库操作的方法,如`ResultSet...

    Elasticsearch的javaapi使用.docx

    for (Map.Entry, Object> entry : data.entrySet()) { builder.field(entry.getKey(), entry.getValue()); } builder.endObject(); return client.prepareIndex(indexName, typeName, id) .setSource(builder)...

    java源代码公司管理系统

    Class.forName(dbClassName); conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); } else return; } catch (Exception ee) { ee.printStackTrace(); } } private static ...

    Java 项目开发实例 图书信息管理系统开发文档及源码.docx

    Class.forName(dbClassName).newInstance(); conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); System.out.println("数据库连接成功!"); } } catch (Exception e) { e.printStackTrace(); } } /...

    Java_项目开发实例

    Class.forName(dbClassName).newInstance(); conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); System.out.println("数据库连接成功!"); } else { return; } } catch (Exception e) { e....

    C++编程基础教程.docx

    - 类模板:`template<typename T> class MyContainer { ... };` **2. 数据结构** - 线性表:顺序存储和链式存储。 - 查找方法:顺序查找、二分查找。 - 排序方法:冒泡排序、选择排序、插入排序等。 **3. 索引查找...

    C++模板的实现

    ### 函数模板与普通函数的区别 1. **非类型模板参数**:除了类型参数,函数模板还可以接受非类型参数,如整型或指针。 2. **模板特化**:对于某些特定的数据类型,可以提供特化的函数模板,以优化特定类型的处理。 ...

    Elasticsearch的javaapi使用.pdf

    .field("analyzer", "standard") // specify analyzer for field1 .endObject() .startObject("field2") .field("type", "date") .field("format", "yyyy-MM-dd HH:mm:ss||epoch_millis") // define date ...

    C++基础入门讲义和相关代码

    `,类模板为`template<typename T> class ClassName { ... };`。 八、STL(标准模板库) STL包括容器(如vector、list、set等)、算法(如排序、查找等)和迭代器,大大简化了C++编程。 通过阅读“C++基础入门讲义...

    C++template的实例

    template <template <typename, typename...> class Container, typename T, typename... Args> void printContainer(Container, Args...>& c) { for (const auto& elem : c) { std::cout ; } std::cout ; } ```...

    易学C++1-17.rar

    - **流程控制**:包括条件语句(if...else、switch...case)、循环语句(for、while、do...while)和跳转语句(break、continue)。 3. **函数** 函数是可重用的代码块,可以接受参数并返回值。C++中的函数声明和...

Global site tag (gtag.js) - Google Analytics