2019独角兽企业重金招聘Python工程师标准>>>

一、概述

1、Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class。

2、对比提问:众多的人用一个什么类表示?众多的Java类用一个什么类表示?

人 ——> Person

Java类 ——> Class

3、对比提问: Person类代表人,它的实例对象就是张三,李四这样一个个具体的人,Class类代表Java类,它的各个实例对象又分别对应什么呢?

        ① 对应各个类在内存中的字节码,例如,Person类的字节码,ArrayList类的字节码,等等。

② 一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码,不同的类的字节码是不同的,所以它们在内存中的内容是不同的,这一个个的空间可分别用一个个的对象来表示,这些对象显然具有相同的类型,这个类型是什么呢?

4、如何得到各个字节码对应的实例对象( Class类型)

① 类名.class,例如,System.class

② 对象.getClass(),例如,new Date().getClass()

        ③ Class.forName("类名"),例如,Class.forName("java.util.Date");

            注:此方式的两种含义——

                > 如果该类已经被类加载器加载至jvm虚拟机中,那么直接返回该字节码实例对象

                > 否则类加载器先将该类加载至jvm虚拟机并缓存,然后返回该字节码实例对象

5、九个预定义Class实例对象

boolean byte char short int long float double void
Boolean.TYPE, Character.TYPE, Byte.TYPE, Short.TYPE, Integer.TYPE, Long.TYPE, Float.TYPE, Double.TYPE, Void.TYPE

① 参看Class.isPrimitive方法的帮助

② Int.class == Integer.TYPE

package staticimport;public class ReflectTest {public static void main(String[] args) throws Exception {String str = "abc";Class clazz = str.getClass();Class clazz2 = String.class;Class clazz3 = Class.forName("java.lang.String");//三种方式获取String类的Class的实例对象均是同一个!System.out.println(clazz == clazz2);System.out.println(clazz == clazz3);//String是否是原始类型(false)System.out.println(String.class.isPrimitive());//int是否是原始类型(true)System.out.println(int.class.isPrimitive());//int与Integer的Class类型是否一样(false)System.out.println(int.class == Integer.class);//Integer.TYPE其实就是int.class(true)System.out.println(int.class == Integer.TYPE);//int[]的Class类型是否是原始类型(false)System.out.println(int[].class.isPrimitive());//int[]的Class类型是否是数组类型(true)System.out.println(int[].class.isArray());}}

6、数组类型的Class实例对象

Class.isArray()

    7、总之,只要是在源程序中出现的类型,都有各自的Class实例对象,例如,int[],void…

转载于:https://my.oschina.net/Howard2016/blog/1613738

反射的基石——Class类相关推荐

  1. 包里替换class文件_Java 反射之根基 Class 类

    Java 反射之根基 Class 类 Java中反射机制很重要,Java的动态语言就是靠反射机制实现的,反射技术也是程序员走的更远必不可少的一个技能.一般情况下我们都是通过类来创建对象,如果要求通过一 ...

  2. javabean反射改字段内容_java反射机制给实体类相同字段自动赋值实例

    一.封装一个工具类 1.简易版 package net.aexit.construct.acceptance.websky.utils; import java.lang.reflect.Field; ...

  3. 如何通过反射将字符串转换为类

    package org.entity; /*** 本案例演示如何通过反射将字符串转换为类* */ public class Test {public static void main(String[] ...

  4. 利用反射机制创建新类的两种方式及比较

    [0]README 0.1) 本文描述+源代码均 转自 http://blog.csdn.net/fenglibing/article/details/4531033 , 旨在深入理解 如何利用反射机 ...

  5. java 反射类成员_java 反射(二)类成员

    在Java反射的包中定义一个接口java.lang.reflect.Member,它有三个实现类java.lang.reflect.Field, java.lang.reflect.Method, a ...

  6. java 类.class_Java 反射之根基 Class 类

    Java 反射之根基 Class 类 Java中反射机制很重要,Java的动态语言就是靠反射机制实现的,反射技术也是程序员走的更远必不可少的一个技能.一般情况下我们都是通过类来创建对象,如果要求通过一 ...

  7. JAVA反射机制、Class类及动态加载、成员变量构造方法其他方法的反射与调用、代理模式AOP

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称为java语言 ...

  8. 反射:获取Class类的三种方法

    反射:获取Class类的三种方法 // 1.Class类中的一个静态方法:forName(全限名:包名 + 类名) Class c = Class.forName(路径); System.out.pr ...

  9. Java利用反射动态加载类实战

    package com.web.common.utility.reflector; import java.io.Serializable; import java.lang.reflect.Cons ...

最新文章

  1. ssh远程操作服务器
  2. sql查询between and_SQL(二)——SQL简单查询
  3. django邮箱验证模块
  4. hdu 1317 XYZZY【Bellheman_ford 判断正环小应用】
  5. (待定系数法)A/B
  6. fun(1),fun(2),fun(3)
  7. DataGrid实现简单的行分组
  8. CCNP-17 OSPF试验13(BSCI)
  9. 技术人员如何成长?(资料整理)
  10. 计算机组成原理尾数的求法,计算机组成原理第八讲(运算办法).ppt
  11. 自动化CodeReview - ASP.NET Core请求参数验证
  12. coco数据集大小分类_COCO数据集的简单介绍
  13. 京东基础架构部招聘GO/JAVA架构师两名(T7+)
  14. 远程访问 Sql Server Express
  15. 注册Google的步骤
  16. 三极管工作原理_PNP型三极管基础知识解析
  17. Java笔记17:JAVA常用函数
  18. Google是如何教会机器玩Atari游戏的
  19. python入门和使用
  20. LA 4986 hdu3756 Dome of Circus 三分答案

热门文章

  1. Android线程详解
  2. DLL和COM的发展过程
  3. java中对集合操作的易错点01
  4. Vue—基础概念—指令
  5. SDNU 1429.区间k大数查询(水题)
  6. Ubuntu 14.04 更换为阿里云源
  7. D. Imbalanced Array
  8. wenbao与最优比率生成树
  9. ASP.NET实现推送文件到浏览器的方法
  10. java学习笔记(4)