Test3_透彻分析java反射机制的基础概念
来源:互联网 发布:知著投资咨询有限公司 编辑:程序博客网 时间:2024/05/01 01:28
1.Java类用于描述一类事物的共性,描述这类事物该有什么属性,不该有什么属性,
但是一个具体的对象具体的属性值是什么,不管,只管你该不该有这个属性,
而不管该属性的值是什么,这就是Java类的作用;
---------------------------------------------------------------
2.Java中的各个类,也是一种事物,他们属于同一类事物,都是Java中的类,我们当然
可以用一个类来描述这类事物,这个类的就是Class;
人-->Person
Java类-->Class
---------------------------------------------------------------
3. //什么是字节码呢?
-->当我们在程序中用到了Person这个类的时候,首先要从硬盘上把这个
类的二进制码(编译过的.Class文件)加载到内存中来,才可以去创建
一个个对象,源程序中有几个类,内存中就有几份字节码,每一份字节码
就是一个Class类的实例对象。
Date 类
-->Class.forName("*.*.*");方法的作用?
作用是返回所加载的类的字节码,如果这个类已经被加载进来了(java虚拟机中有该字节码),
则直接从缓存中调用并返回;
如果该类没有被加载过(java虚拟机中没有该字节码),则调用类加载器加载进来以后,把那份字节码缓存起来
同时返回该字节码
---------------------------------------------------------------
4.得到字节码的方式有三种(上题):
·· 类名.class
·· 对象.getClass();
·· Class.forName("包名.类名"); 做反射的时候常用第三种,通常在写源程序的时候
还不知道类的名字,可以把"包名.类名"换成一个
字符串变量,在程序运行的时候临时赋值
---------------------------------------------------------------
5.举例:
---------------------------------------------------------------
6.public boolean isPrimitive()
判定指定的 Class 对象是否表示一个基本类型。
有九种预定义的 Class 对象,表示八个基本类型和 void。
这些类对象由 Java 虚拟机创建,与其表示的基本类型同名,
即 boolean、byte、char、short、int、long、float 和 double。
这些对象仅能通过下列声明为 public static final 的变量访问,
也是使此方法返回 true 的仅有的几个 Class 对象。
---------------------------------------------------------------
7.总之,只要是在源程序中出现的类型,都有各自的Class实例对象,
例如:int[],void ...
---------------------------------------------------------------
8.得到一个Class对象,可以通过 Class.isArray(),Class.isPrimitive()
来知道它到底是什么类型
---------------------------------------------------------------
但是一个具体的对象具体的属性值是什么,不管,只管你该不该有这个属性,
而不管该属性的值是什么,这就是Java类的作用;
---------------------------------------------------------------
2.Java中的各个类,也是一种事物,他们属于同一类事物,都是Java中的类,我们当然
可以用一个类来描述这类事物,这个类的就是Class;
人-->Person
Java类-->Class
---------------------------------------------------------------
3. //什么是字节码呢?
-->当我们在程序中用到了Person这个类的时候,首先要从硬盘上把这个
类的二进制码(编译过的.Class文件)加载到内存中来,才可以去创建
一个个对象,源程序中有几个类,内存中就有几份字节码,每一份字节码
就是一个Class类的实例对象。
//p1就是内存中的 Person类对应的字节码生成的对象Person p1 = new Person(); Person p2 = new Person();
Date 类
Class cls1= Date.class //Class的实例对象代表内存中的一份字节码;//Date.class就表示Date类在内存中的字节码Class cls2= Person.class//同上;p1.getClass();//-->Object类中的方法Class.forName("java.lang.String");//Class的静态方法
-->Class.forName("*.*.*");方法的作用?
作用是返回所加载的类的字节码,如果这个类已经被加载进来了(java虚拟机中有该字节码),
则直接从缓存中调用并返回;
如果该类没有被加载过(java虚拟机中没有该字节码),则调用类加载器加载进来以后,把那份字节码缓存起来
同时返回该字节码
---------------------------------------------------------------
4.得到字节码的方式有三种(上题):
·· 类名.class
·· 对象.getClass();
·· Class.forName("包名.类名"); 做反射的时候常用第三种,通常在写源程序的时候
还不知道类的名字,可以把"包名.类名"换成一个
字符串变量,在程序运行的时候临时赋值
---------------------------------------------------------------
5.举例:
public class RefilectTest{public static void main(String[] args)throws Exception{String str1 = "abc",Class cls1 = str1.getClass();Class cls2 = String.class;Class cls3 = Class.forName("java.long.String");System.out.println(cls1 ==cls2); //trueSystem.out.println(cls2 ==cls3); //true}}
---------------------------------------------------------------
6.public boolean isPrimitive()
判定指定的 Class 对象是否表示一个基本类型。
有九种预定义的 Class 对象,表示八个基本类型和 void。
这些类对象由 Java 虚拟机创建,与其表示的基本类型同名,
即 boolean、byte、char、short、int、long、float 和 double。
这些对象仅能通过下列声明为 public static final 的变量访问,
也是使此方法返回 true 的仅有的几个 Class 对象。
int.class.isprimitive();//trueint[].class.isPrimitive();//false 数组类型的Class实例对象
---------------------------------------------------------------
7.总之,只要是在源程序中出现的类型,都有各自的Class实例对象,
例如:int[],void ...
---------------------------------------------------------------
8.得到一个Class对象,可以通过 Class.isArray(),Class.isPrimitive()
来知道它到底是什么类型
---------------------------------------------------------------
- Test3_透彻分析java反射机制的基础概念
- (Java基础--反射)透彻分析反射的基础--Class类
- 张孝祥 java基础加强版--透彻分析反射的基础
- 透彻分析反射的基础(1)
- 透彻分析反射的基础(2)
- 透彻分析反射的基础_Class类
- 透彻分析反射的基础---class类
- java反射机制基础概念
- 透彻分析反射的基础——Class
- 17 透彻分析反射的基础_Class类
- 透彻分析反射与反射的应用
- (Java基础--反射)理解反射的概念
- Java反射机制概念
- 利用反射机制分析类 | Java基础
- java中的反射机制基础概念及其代码演示
- Java反射机制概念及构造方法的反射
- 黑马程序员—高新技术加强之透彻分析反射的基础_Class类
- java 基础之--java的反射机制
- 弹出窗口详解
- 用JavaScript解决ASP.NET服务器控件造成的刷新问题
- [jms那点事儿] JMS ( java message service )入门 + activemq消息持久化
- 超强的万能 makefile
- struts2 ongl漏洞解决方案
- Test3_透彻分析java反射机制的基础概念
- twitterAPI接入
- void*
- 学习oracle 创建db和创建用户
- Test4_理解java反射机制的概念以及应用
- tomcat配域名方式
- iBATIS sql中的处理特殊符号的做法
- 守护进程(Daemon)
- Servlet+Mysql笔记