`
huhu0817
  • 浏览: 13853 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

java基础知识整理

阅读更多

今天空闲,把以前学习java的一些基础知识整理出来,放到博客上。

Class.forName的含义

Class aClass = Class.forName(xxx.xx.xx);
Object anInstance = aClass.newInstance();
Class.forName("").newInstance()返回的是object
Class.forName(xxx.xx.xx) 返回的是一个类,
.newInstance() 后才创建一个对象
Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段。

在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方法,一个是关键字外,最主要有什么区别?它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。

Java中工厂模式经常使用newInstance()方法来创建对象,因此从为什么要使用工厂模式上可以找到具体答案。 例如:
class c = Class.forName(“Example”);
factory = (ExampleInterface)c.newInstance();

其中ExampleInterface是Example的接口,可以写成如下形式:
String className = "Example";
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();

进一步可以写成如下形式:
String className = readfromXMlConfig;//从xml 配置文件中获得字符串
class c = Class.forName(className);
factory = (ExampleInterface)c.newInstance();

上面代码已经不存在Example的类名称,它的优点是,无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……,只要他们继承ExampleInterface就可以。

从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载java API的那个加载器。

现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。 这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。

最后用最简单的描述来区分new关键字和newInstance()方法的区别:
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造。

分享到:
评论

相关推荐

    Java基础知识整理

    本文将对Java基础知识进行系统性的整理和总结,涵盖面向对象、访问控制权限、Final关键字、内部类、集合等多个方面的知识点。 面向对象 面向对象是一种编程范式,Java语言是完全面向对象的,它将一切事物都抽象为...

    java 知识点整理

    Java知识点整理 Java是一种广泛使用的面向对象的编程语言,它具有丰富的API(应用程序接口)和强大的功能。在Java考试中,掌握以下知识点至关重要: 1. **JAVA SE**(Java标准版)是Java的核心部分,包括基础语法...

    java学习笔记,java基础知识整理

    ### Java学习笔记——Java基础知识整理 #### 一、Java技术入门 Java是一种广泛使用的编程语言,因其跨平台性、安全性和高效性而受到青睐。Java最初由Sun Microsystems开发,并于1995年首次发布。 ##### 1. Sun ...

    Java基础知识整理 初学者.zip

    这份"Java基础知识整理 初学者.zip"压缩包包含了一份名为"Java基础.gmind"的思维导图,旨在帮助初学者构建对Java基础知识的全面理解。以下是根据这个主题详细展开的知识点: 1. **Java简介**:Java是由Sun ...

    20160326_java基础知识整理

    ### Java基础知识整理 #### 一、面向过程 **1. 搭建Java开发和运行环境** - **JVM (Java Virtual Machine)**: Java虚拟机是执行Java字节码的虚拟机,它提供了运行Java程序所需的运行时环境。 - **JRE (Java ...

    Java基础知识整理.doc

    【Java基础知识整理】 Java是一种广泛使用的面向对象的编程语言,具有跨平台的特性,由Sun Microsystems(现已被Oracle收购)开发。本篇文章将对Java的基础知识进行归纳和总结。 1. **环境搭建与开发** - **环境...

    JAVA基础知识整理

    这是我自己整理的一份。java基础的一份xmind思维导图文件,希望对大家有所帮助。

    JAVA核心面试知识点整理

    JAVA核心面试知识点整理 Java是目前企业开发中最常用的编程语言之一,Java面试知识点涵盖了Java语言的方方面面,包括Java基础知识、Java高级知识、Java设计模式、Java框架等等。以下是Java核心面试知识点的整理。 ...

    java知识点整理(良心出品必属精品).pdf

    这份“java知识点整理”涵盖了Java语言的核心概念和关键知识点,以下是一些主要的Java编程领域及其详细说明: 1. **基础语法** - 变量与数据类型:Java支持基本数据类型(如int、float、char)和引用类型(如类、...

    JAVA核心知识点整理

    本文将深入探讨在"JAVA核心知识点整理"中涉及的关键概念和技术。 一、Java基础 Java的基础知识包括语法、面向对象特性(封装、继承、多态)、异常处理、输入/输出流以及集合框架。了解基本类型、类、接口、包的概念...

    JAVA核心知识点整理.rar

    JAVA核心知识点整理--》从Java基础-->Java数据结构-->框架-->Java中间件,缓存JAVA核心知识点整理--》从Java基础-->Java数据结构-->框架-->Java中间件,缓存JAVA核心知识点整理--》从Java基础--&...

    JAVA核心面试知识整理【书签完整】【高清可复制】

    以下是对其中主要知识点的详细说明: 1. **JVM(Java虚拟机)**:JVM是Java程序运行的基础,它负责解析.class文件,执行字节码,并管理内存。理解JVM的工作原理,包括类加载机制、内存模型(堆、栈、方法区、本地...

    JAVA面试核心知识点整理(283页).pdf

    JAVA面试核心知识点整理 本文档旨在为Java开发者提供一个 hệ thống的面试知识点整理,涵盖了Java的核心概念、JVM的工作原理、Java编程语言的基本语法和高级特性等多方面的知识点。下面是对该文档的详细解读。 ...

    Java知识点整理,包括计算机基础、数据结构和算法、Java、数据库,分布式,微服务,系统设计等等。.zip

    Java知识点整理,包括计算机基础、数据结构和算法、Java、数据库,分布式,微服务,系统设计等等。

    读书笔记:Java知识点整理包括计算机基础、数据结构和算法、Java、数据库分布式微服务系统设计等等。.zip

    读书笔记:Java知识点整理包括计算机基础、数据结构和算法、Java、数据库分布式微服务系统设计等等。

    JAVA核心知识点整理.pdf

    Java是一种广泛使用的面向对象编程语言,其核心特性之一就是多态性。多态性赋予了Java代码灵活性和可扩展性,使得程序可以处理多种不同类型的对象而无需知道具体...在实际开发中,这些知识点是Java程序员必备的基础。

Global site tag (gtag.js) - Google Analytics