- 浏览: 97181 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jameswolf:
补肾啊!冬天多喝,但是补只是后招,别漏才是真理,呵呵
朋友告诉我的神粥秘方 -
wa327114652:
很想学习,但能再详细点吗?
for java beginner 5-2 - 自己实现枚举-下 -
superlittlefish:
不错,简单易懂.一直在看你的blog,感觉反射写的挺好的.让我 ...
for java beginner 15 下java反射在框架里的应用 读取properties文件
java 反射 的基础基础 Class的理解
反射 在 1.2 的时候就有了,
基本上所有的框架都会用到.
有的小东西 e.g. junit 也用到了,
反射无处不在的
要了解 反射 必须必须必须了解一个 类 类的类 Class
类-->描述一类事物,规定你应该有什么属性,不应该有什么属性
至于属性的具体值是什么,无所谓!由具体对象决定
User类--> 规定了你有姓名,年龄等属性的一类东西
生活里还有一类东西,就是我们编程时用的 类
这一类东西, 我们用 Class 来抽象
那么Class类 规定了编程时用的类 应该有些什么东西呢???
最最起码要规定
你应该有一个名字吧
你应该有一个包名吧
你应该有一堆属性信息
你应该有一堆方法信息
父类是什么
实现了什么接口
等等。。。
.................
=========================
Person p1 = new Person();
Person p2 = new Person();
上面人人都知道
那么下面呢??
Class clazz1 = ?;
Class clazz2 = ?;
这几个问号该怎么办呢??
Class clazz = new Class(); //JAVA里没有这种规定
Class代表内存里的一堆 字节码 的抽象
Class clazz = 字节码 ; 这是对的
解释一下什么是 字节码?
当程序去compile 这一行代码时
Person p1 = new Person();
JVM需要去 disk 上加载Person 的字节码 *.class 文件 到内存里
把p1指向那一堆 字节码,改属性就是改 这堆东西的内容.
当然一个程序不仅仅是需要一堆 Person 字节码,
还需要其他的,比如 Date Math 等,
那么 内存就有三堆 字节码,
★也就是 三个 Class的实例 !!!
我们可以这样写
Class clazz = Person.class ;
Class clazz = Date.class ;
可以这么简单的理解
Class 是一堆一堆 字节码 的抽象 [码里有名字,包名,属性信息,方法信息..]
clazz 是一堆字节码的 引用
Person.class 代表一堆实实在在的 字节码
Person p1 = new Person();
p1代表什么呢??
代表那一堆 字节码 生成 的对象,
那么这有没有方法得到 那堆 字节码呢?
有!!p1.getClass();
现在有两种方法 得到 字节码:
Class clazz1 = Person.class;
Class clazz2 = p1.getClass();
还有一种方法
Class.forName("java.lang.String")
这也可以得到一份 字节码
[直接内存里拿,内存里没有就用 类加载器去加载]
总的有三种方法!!!
Class clazz1 = Date.class;
p1.getClass();
Class.forName("java.lang.String");
最后一种用法最最广: 你给我名字好了,我自己去找那份字节码,不用写死!
[记得动态Form么?就是在XML写好的类名字]
最后一种写法有两个用途:
1 返回一份字节码
2 把那份字节码 import 到 JVM 里
整个JAVA里有9个预定义的 Class实例
就是9份 字节码
8个基本 加 一个void
Class clazz = void.class;//呵呵,从来不会有人用,但是是对的
int.class == Integer.TYPE;
======================
=======================
反射 在 1.2 的时候就有了,
基本上所有的框架都会用到.
有的小东西 e.g. junit 也用到了,
反射无处不在的
要了解 反射 必须必须必须了解一个 类 类的类 Class
类-->描述一类事物,规定你应该有什么属性,不应该有什么属性
至于属性的具体值是什么,无所谓!由具体对象决定
User类--> 规定了你有姓名,年龄等属性的一类东西
生活里还有一类东西,就是我们编程时用的 类
这一类东西, 我们用 Class 来抽象
那么Class类 规定了编程时用的类 应该有些什么东西呢???
最最起码要规定
你应该有一个名字吧
你应该有一个包名吧
你应该有一堆属性信息
你应该有一堆方法信息
父类是什么
实现了什么接口
等等。。。
.................
=========================
Person p1 = new Person();
Person p2 = new Person();
上面人人都知道
那么下面呢??
Class clazz1 = ?;
Class clazz2 = ?;
这几个问号该怎么办呢??
Class clazz = new Class(); //JAVA里没有这种规定
Class代表内存里的一堆 字节码 的抽象
Class clazz = 字节码 ; 这是对的
解释一下什么是 字节码?
当程序去compile 这一行代码时
Person p1 = new Person();
JVM需要去 disk 上加载Person 的字节码 *.class 文件 到内存里
把p1指向那一堆 字节码,改属性就是改 这堆东西的内容.
当然一个程序不仅仅是需要一堆 Person 字节码,
还需要其他的,比如 Date Math 等,
那么 内存就有三堆 字节码,
★也就是 三个 Class的实例 !!!
我们可以这样写
Class clazz = Person.class ;
Class clazz = Date.class ;
可以这么简单的理解
Class 是一堆一堆 字节码 的抽象 [码里有名字,包名,属性信息,方法信息..]
clazz 是一堆字节码的 引用
Person.class 代表一堆实实在在的 字节码
Person p1 = new Person();
p1代表什么呢??
代表那一堆 字节码 生成 的对象,
那么这有没有方法得到 那堆 字节码呢?
有!!p1.getClass();
现在有两种方法 得到 字节码:
Class clazz1 = Person.class;
Class clazz2 = p1.getClass();
还有一种方法
Class.forName("java.lang.String")
这也可以得到一份 字节码
[直接内存里拿,内存里没有就用 类加载器去加载]
总的有三种方法!!!
Class clazz1 = Date.class;
p1.getClass();
Class.forName("java.lang.String");
最后一种用法最最广: 你给我名字好了,我自己去找那份字节码,不用写死!
[记得动态Form么?就是在XML写好的类名字]
最后一种写法有两个用途:
1 返回一份字节码
2 把那份字节码 import 到 JVM 里
整个JAVA里有9个预定义的 Class实例
就是9份 字节码
8个基本 加 一个void
Class clazz = void.class;//呵呵,从来不会有人用,但是是对的
int.class == Integer.TYPE;
======================
package com.ncs; public class ReflectTest { public static void main(String[] args) throws Exception { String str = "hubin"; Class clazz1 = str.getClass(); Class clazz2 = String.class; Class clazz3 = Class.forName("java.lang.String"); System.out.println(clazz1 == clazz2); //true System.out.println(clazz1 == clazz3); //true //所以,在内存里 字节码 都是一份的, System.out.println(clazz1.isPrimitive()); // false 不是基本类型 String肯定不是基本类型 System.out.println(int.class.isPrimitive()); // true 这个是基本类型 System.out.println(int.class == Integer.class); //false int是一分字节码 Integer 也是另一份字节码 System.out.println(int.class == Integer.TYPE); //true 这是SUN给我们弄的 那个TYPE 得到包装类基本类的 字节码 System.out.println(int[].class.isPrimitive()); // false 你这个数组了 System.out.println(int[].class.isArray()); // true 这可以判断数组 //void 也是TYPE //总之,只要在源程序里出现的类型 //都有自己的Class实例对象 //e.g. int[] void //void 也是类型, 这个类型表示没有类型 } }
=======================
发表评论
-
pull解析器通用解析XML与生成XML
2013-02-23 14:52 0pull解析器,简单易用,android都在用,肯定有他的优 ... -
java decompiler - a tool to view jar file
2012-02-15 22:26 1026有时候还是很需要看看人家JAR包里写的什么乱七八糟的东西,这东 ... -
JAVA工作
2011-07-20 21:11 733################## Applet ... -
helios-use-subversion-behind-proxy
2011-04-04 16:30 769download the eclipse helios in ... -
IBM发布时间不足解决方法
2011-02-17 19:16 767D:\IBM\SDP\runtimes\base_v61\p ... -
log4j简单例子
2010-10-03 18:27 877简单点说, 写程序时,有时懒得debug,就直接Sy ... -
java 泛型-1-使用而已
2009-12-01 23:39 1130023-java1.5泛型-1 懒人想的 把检查代码的工作交 ... -
java 1.5 annotation-3 设值让反射拿
2009-12-01 20:39 1578java 1.5 annotation 的use 前面的什么 ... -
java 1.5 annotation-2
2009-11-30 23:28 1188java 1.5 注解-2[非常重要 比每举重要] 刚刚只是 ... -
java 1.5 annotation-1
2009-11-30 21:07 1325java 1.5 注解[非常重要 比每举重要] 1.5后的新 ... -
for java beginner-19 beanutils包
2009-11-29 22:20 756019-使用BeanUtils工具包操 ... -
for java beginner-18 JAVABEAN规范-1
2009-11-29 21:12 1037018-JAVABEAN规范-1 IntroSpec ... -
for java beginner 17 配置文件的知识
2009-11-29 19:29 785017 配置文件的知识 刚刚已经说到 配置文件,我说放 工程 ... -
for java beginner 15 下java反射在框架里的应用 读取properties文件
2009-11-29 17:44 1391java 框架基础 ------------------- ... -
for java beginner 14 ArrayList HashSet HashCode(中)
2009-11-29 13:24 1153java 反射 数组的反射 ArrayList HashSe ... -
for java beginner13java 反射 数组的反射(上)其实是讲ArrayList HashSet HashCode
2009-11-29 12:35 939java 反射 数组的反射(上 ... -
for java beginner12数组的反射的应用
2009-11-29 10:04 1046java 反射 数组的反射 数组也是一种类型,当然可以反射 ... -
for java beginner11 java 反射 Method类
2009-11-29 08:30 1304java 反射 Method类 str1.charAt() ... -
for java beginner10 java 反射 Field类
2009-11-29 07:17 3565java 反射 Field类 -------用到一个bea ... -
for java beginner 9 java反射的概念和Constructor 类
2009-11-29 07:13 1415java 反射 的概念 和 Constructor 类 反 ...
相关推荐
introduce in english
Pentaho 8 Reporting for Java Developers 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
综上所述,《Java A Beginner’s Guide》第六版是一本针对初学者的全面且权威的Java编程指南,作者赫伯特·席尔德特结合自己在编程语言领域的深厚知识和广泛经验,为读者提供了一个理解Java语言的框架,同时由Java...
该书全面介绍了Java的基础知识,适合那些没有编程经验的读者。 3. 作者Herbert Schildt:Herbert Schildt是一位畅销书籍作家,拥有近三十年的编程写作经历,是Java语言方面的权威专家。他的作品包括《Java:The ...
Java A Beginner's Guide(6th) 英文无水印pdf 第6版 pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系...
Fully updated to cover Java Platform, Standard Edition 7 (Java SE 7), Java: A Beginner's Guide, Fifth Edition starts with the basics, such as how to compile and run a Java program, and then discusses...
This book is for anyone who wants to learn computer programming and knows absolutely nothing about it. If you are wondering whether this book is going to teach you how to create amazing applets or ...
1. **基础语法**:包括变量、数据类型(如整型、浮点型、字符串等)、运算符、控制结构(如if语句、for循环、while循环)、函数定义与调用等。 2. **类与对象**:讲解面向对象编程的基本概念,如类的定义、对象的...
"Java_Programming_for_the_Absolute_Beginner.rar_absolute java_jav"这个标题表明这是一份针对完全初学者的Java编程教程,可能包含了从最基础的概念到实际编程技巧的全面介绍。 1. **基础概念**:在学习Java之前...
这本书《Java-Programming-for-Beginner》将引领你走进这个充满无限可能的世界。Java以其“一次编写,到处运行”的特性,使得开发者可以在多种平台上无缝地运行代码,极大地提高了开发效率。 1. **Java基础知识**:...
通过以上总结,我们可以看到《Java 7 初学者教程》第三版涵盖了 Java 编程语言的基础知识,包括语言特性、基本语法、面向对象编程等内容,并提供了丰富的实例和练习,非常适合初学者作为入门教材使用。
Java A Beginner's Guide(6th) 英文epub 第6版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java A Beginner’s Guide(7th) 英文epub 第7版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java A Beginner's Guide(6th) 英文mobi 第6版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Java A Beginner’s Guide(7th) 英文azw3 第7版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
《Java2: A Beginner's Guide Second ...总之,《Java2: A Beginner's Guide Second Edition》是一本全面的Java入门教程,通过学习,读者可以系统地掌握Java编程语言,为日后深入学习和开发Java应用打下坚实基础。
### Java - Java A Beginner's Guide ...综上所述,《Java: A Beginner’s Guide》第九版为读者提供了从Java基础知识到实际编程实践的全面指南。无论是初学者还是有一定经验的开发者,都能从中获得有价值的指导和启发。
Learn to design and create video games using the Java programming language and the LibGDX software library. Working through the examples in this book, you will create 12 game prototypes in a variety ...