张孝祥 java基础加强版--透彻分析反射的基础
2012-09-19 09:50
253 查看
反射由jdk1.2发展过来,不是jdk1.5新特性
反射的基石--Class(C是大写)一个类
1.java类用于描述一类事物的共性
2.java程序中的各个Java类,属于同一类事物(都是java中的类),可以用一个类来
描述这个事物,这个类就是Class,要注意与小写class关键字的区别
对比提问:一.众多人--->Person; 众多java类--->Class(得到类的名称.类的访问权限等)
二.Person类代表人,他的实例对象就是张三,李四这样一个个具体的人
Class类代表java类,他的各个类:
1.对应各个类在内存中的字节码,例如,Person类的字节码,ArrayList类的字节码
等等.
2.一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是
类的字节码,不同的类的字节码是不不同的,所以他们在在内存中的内容是不同的,这一个个的空间可分别用
一个个对象来表示
知识点:数据在硬盘上的保存形式是而二机制代码
字节码:原程序中将数据转化成字节码
persion p1=new Person()k;
Class cls1=Date.calss//字节码1;
Class cls2=Person.class//字节码2;
Class.for("java.lang.string");
得到字节码的三种方式:
1.类名.class,例如,System.class
2.对象.getClass() 例如,new Date().getClass()
3.Class.forName("类名"),例如,Class.forName("java.util.Date");
八种基本对象的字节码(byte,short,int,long,float,double,char,boolean)和void.class字节码共计
九种预定义字节码
实例:public class ReflectTest {
/**
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String s="abc";
Class cls1=s.getClass();
Class cls2=String.class;
Class cls3=Class.forName("java.lang.String");
System.out.println(cls1==cls2);
System.out.println(cls1==cls3);
}
}
判断是否是基本类型字节码:isPrimitive();
System.out.println(int.class==Integer.TYPE);TYPE代表包装类型所代表的基本类型字节码,所以为true
数组类型的Class实例对象
Class.isArray();
总之,只要在源程序中出现的类型,都有各自的Class实例对象
反射的基石--Class(C是大写)一个类
1.java类用于描述一类事物的共性
2.java程序中的各个Java类,属于同一类事物(都是java中的类),可以用一个类来
描述这个事物,这个类就是Class,要注意与小写class关键字的区别
对比提问:一.众多人--->Person; 众多java类--->Class(得到类的名称.类的访问权限等)
二.Person类代表人,他的实例对象就是张三,李四这样一个个具体的人
Class类代表java类,他的各个类:
1.对应各个类在内存中的字节码,例如,Person类的字节码,ArrayList类的字节码
等等.
2.一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是
类的字节码,不同的类的字节码是不不同的,所以他们在在内存中的内容是不同的,这一个个的空间可分别用
一个个对象来表示
知识点:数据在硬盘上的保存形式是而二机制代码
字节码:原程序中将数据转化成字节码
persion p1=new Person()k;
Class cls1=Date.calss//字节码1;
Class cls2=Person.class//字节码2;
Class.for("java.lang.string");
得到字节码的三种方式:
1.类名.class,例如,System.class
2.对象.getClass() 例如,new Date().getClass()
3.Class.forName("类名"),例如,Class.forName("java.util.Date");
八种基本对象的字节码(byte,short,int,long,float,double,char,boolean)和void.class字节码共计
九种预定义字节码
实例:public class ReflectTest {
/**
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String s="abc";
Class cls1=s.getClass();
Class cls2=String.class;
Class cls3=Class.forName("java.lang.String");
System.out.println(cls1==cls2);
System.out.println(cls1==cls3);
}
}
判断是否是基本类型字节码:isPrimitive();
System.out.println(int.class==Integer.TYPE);TYPE代表包装类型所代表的基本类型字节码,所以为true
数组类型的Class实例对象
Class.isArray();
总之,只要在源程序中出现的类型,都有各自的Class实例对象
相关文章推荐
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- 黑马程序员_张孝祥_Java基础加强_反射
- (Java基础--反射)透彻分析反射的基础--Class类
- 黑马程序员—高新技术加强之透彻分析反射的基础_Class类
- 黑马程序员-张孝祥Java基础加强(PART1)
- 黑马程序员--Java基础加强学习笔记之Class类、反射(Reflect)
- [黑马程序员] Java基础加强(5-7天)2010年Java高新技术_张孝祥
- 黑马程序员--Java基础加强--10.【PropertyDescriptor操作JavaBean VS 反射操作Java类】【个人总结】
- 黑马程序员-java基础加强-反射的深入讲解
- java基础加强02 反射
- 黑马程序员-Java基础加强-反射
- 黑马程序员_张孝祥_Java基础加强_小知识点汇总
- Java 基础加强 - 反射Reflect
- Java基础加强---反射
- 黑马程序员_张孝祥_Java基础加强_泛型
- JAVA基础加强:反射
- java基础加强(反射、内省、BeanUtils工具类、类加载器、动态代理)
- java基础加强_02_反射
- 黑马程序员---java基础加强 反射的深入理解