`
lgywindows
  • 浏览: 9346 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

反射的基础(一):类的加载

    博客分类:
  • java
阅读更多
反射的本质:将类的各种属性(类的变量,类的方法,类所在的包名,类的构造器等)映射成相应的java类。用"一群类"去描述和操纵一个类。
学习反射的第一步语法就是类的加载。
关于类的解释:类是对象实例的抽象和模板。如果定义一个描述人的类,那么对象张三就是人的实例,对象李四也是人的实例。
类的字节码加载相当于从对象张三或对象李四那里得到人的信息或者通过定义人的类得到人的信息。
一 类的三种加载方式 String.class 和 str.getClass() 和 Class.forName(\"java.lang.String\") 返回的都是String类的字节码。
第一种和第二种方式都是通过已经存在的对象类型来获得类的字节码加载。
第三种方式是动态的类加载方式,使用时需要处理ClassNotFoundException异常。本例中将异常抛出以例代码紧凑。
二 九种基本类型(void byte short int long float double boolean char)也有类的加载 例如 void.class int.class 它们都属于基本类型,而 <br /><br />Integer.class不是基本类型。
三 int.class和Integer.class加载的是不同类的字节码,但int.class和Integer.TYPE是相同的。
四 数组的判断语法是int[].class.isArray()。
总结:只要是在代码中出现的类型,都有各自的class实例对象。

代码示范如下: </p>
public class MyClass {
	public static void main(String[] args) throws Exception {
		String str = "abc";
		// 类的三种加载方式的语法如下
		Class cls1 = String.class;
		Class cls2 = str.getClass();
		Class cls3 = Class.forName("java.lang.String");
		System.out.println("关于类的解释:类是对象实例的抽象和模板。如果定义一个描述人的类,那么对象张三就是人的实例,对象李四也是人的实例。");
		System.out.println("类的字节码加载相当于从对象张三或对象李四那里得到人的信息或者通过定义人的类得到人的信息");
		System.out.println("1 类的三种加载方式 String.class 和 str.getClass() 和 Class.forName(\"java.lang.String\") 返回的都是String类的字节码:"+((cls1 == cls2)&&(cls2 == cls3)));
		// 九种基本类型(void byte short int long float double boolean char)也有类的加载  
		System.out.println("2 九种基本类型也有类的加载 例如 void的类加载void.class:"+void.class.getName()+" int的类加载int.class:"+int.class.getName()+"  它们都属于基本类型 :"+void.class.isPrimitive()+" 而Integer的类加载不是基本类型:"+Integer.class.isPrimitive());
		System.out.println("3 int.class 和 Integer.class加载的是不同类的字节码:"+(int.class==Integer.class)+" 但int.class和Integer.TYPE是相同的:"+(int.class==Integer.TYPE));
		System.out.println("4 数组的判断语法是int[].class.isArray():"+int[].class.isArray());
		System.out.println("总结:只要是在源程序中出现的类型,都有各自的class实例对象");
	}
}

下一章节http://lgywindows.iteye.com/blog/1797303
分享到:
评论

相关推荐

    类加载机制及反射

    类加载机制及反射 类加载机制及反射

    《剑指offer》Java基础-反射篇.pdf

    Java基础 反射篇 反射的思想及作用 反射的基本使用 获取类的 Class 对象 构造类的实例化对象 获取一个类的所有信息 获取类中的变量(Field) 获取类中的方法(Method) 获取类的构造器...反射基础篇文末总结

    Java基础 反射篇.md

    - 反射基础篇文末总结 反射是一个非常重要的知识点,在学习Spring 框架时,Bean的初始化用到了反射,在破坏单例模式时也用到了反射,在获取标注的注解时也会用到反射······ 当然了,反射在日常开发中,我们...

    C#反射基础学习

    C#反射学习,自己的学习笔记,涵盖了动态加载程序,每一小结以虚线结束,认真看完也就差不多学完了反射主要的类

    java加载类与反射机制

    Java 程序在运行期间可以动态加载、解析和使用一些在编译阶段并不确定的类型数据,这一机制被称为反射(Reflection)。反射库(reflection library)提供了一个非常丰富且精心设计的工具类,以便编写能够动态操纵Java...

    xml与反射.txt

    第一:获取类加载器:ClassLoader loader=Thread.currentThread().getContextClassLoader();//获取当 前线程的上下文类加载器 第二:通过类加载器获取类 Class clazz=loader.loadClass("com.taobao.reflect.car")//...

    Java工程师必备面试题【多线程、反射、类加载器、JVM、泛型、异常处理、注解、面向对象编程、集合、IO流、序列化】

    内容概要:以上列出的Java面试题涵盖了Java语言的基础知识、面向对象编程、集合、IO流、多线程、反射、类加载器、JVM、序列化、泛型、异常处理、注解等多个方面。 适用人群:以上Java面试题适用于准备Java开发...

    Java的反射机制讲解案例代码 Class类、 获取类的结构信息:构造函数、方法和字段,动态创建对象、调用方法和设置属性

    适用于有一定Java编程基础的开发人员,希望了解和应用Java反射机制的使用者。 使用场景及目标 使用反射机制的典型场景包括以下几个方面: 在运行时动态加载和创建类对象。 通过反射调用对象的方法和访问对象的字段...

    Java基础知识点.html

    类加载器 ClassLoader 反射 Stream 流 函数式编程 Lambda 表达式 网络编程-协议 网络编程-端口 网络编程-IP 多线程 IO流-字节流 IO流-字符流 IO流-转换流 File Map HashMap 序列化和反序列化 可变参数 类型通配符 ...

    12.尚硅谷_java基础_反射

    理解 Class 类 理解 Java 的类加载机制 学会使用 ClassLoader 进行类加载 理解反射的机制 掌握 Constructor、Method、Field 类的用法 理解并掌握动态代理

    面试必问之jvm与性能优化

    Java类的加载是动态的,它并不会一次性将所有类全部加载后再运行,而是保证程序运行的基础类(像是基类)完全加载到jvm中,至于其他类,则在需要的时候才加载。这当然就是为了节省内存开销。 Java的类加载器有三个,...

    Java零基础 - Java的加载与执行原理剖析.md

    - 使用Java反射机制获取类信息的方法; 阅读建议: - 在阅读过程中,请结合实际代码运行,加深对概念和原理的理解。 - 尝试修改示例代码,观察结果的变化,以加强对原理的掌握。 - 学习过程中保持耐心和反复练习,...

    java基础学习总结笔记

    知识主要包括:Java基础常识、如何安装Java工具、Java语言的基础组成、Java面向对象、Java多线程、Java常用类、集合(重点)、IO流、GUI图形界面、网络编程、正则表达式、反射、注解、类加载器、动态代理等等,另外...

    ClassLoaderTest:测试如何正确关闭类加载器,以便可以关闭基础jar文件上的文件句柄

    ClassLoaderTest 测试自定义的URLClassLoader以加载类 测试如何正确关闭类加载器。 测试如何使用反射关闭JarFile来修复资源泄漏。

    尚硅谷_佟刚_Java基础_反射.pdf

    理解Class 类 理解Java 的类加载机制 学会使用ClassLoader 进行类加载 理解反射的机制 掌握Constructor、Method、Field 类的用法 理解并掌握动态代理

    java基础编程必须知道的:SPI、反射、位运算

    通过 SPI,开发者可以定义一组接口,而具体的实现则由不同的提供者来提供,实现了解耦的目的。 SPI 机制使得程序在不修改源代码的情况下,可以动态地加载不同的服务提供者。这样可以让应用程序在运行时选择不同的...

    Java 基础核心总结 +经典算法大全.rar

    JDBC 加载数据库驱动类反射的优势及缺陷 增加程序的灵活性破坏类的封装性 性能损耗 代理模式 静态代理与动态代理常见的动态代理实现JDK Proxy CGLIB JDK Proxy 和 CGLIB 的对比动态代理的实际应用 Spring AOP 变量 ...

    day020-继承加强和设计模式代码和笔记.rar

    加载字节码的一个类而已: 1. 启动类加载器(Bootstrap classLoader) c++ 本地代码实现的类加载器,它负责将 &lt;JAVA_HOME&gt;/lib下面的核心类库 或 -Xbootclasspath选项指定的jar包等 虚拟机识别的...

    Java反射机理简介

    反射:将类的各个组成部分封装为其他对象,这就是反射机制 好处: 可以在程序运行过程中操作这些对象 可以解耦,提高程序的可扩展性 ** Java代码在计算机中经历的三个阶段: Source源代码阶段、Class类对象阶段、...

    Java初级开发面试题

    Java虚拟机:Java内存模型、垃圾回收、类加载机制等。 常见的Java框架:Spring、Hibernate、Mybatis等。 Java设计模式:单例模式、工厂模式、代理模式等。 网络编程:TCP/IP、HTTP、Web Services等。 数据库相关...

Global site tag (gtag.js) - Google Analytics