您的位置:首页 > 编程语言 > Java开发

java基础之----反射

2016-07-13 18:57 417 查看
java 反射的基石–Class类。

java中的类是用于描述一类事物的共性,该事物有什么属性,没有什么属性,至于这个属性值是什么,则是由这个实的实例对象确定的。不同的实例对象有不同的属性值。java程序中的各个类,他们是否属于同一类事物,是不是可以用一个类来描述这些java类呢。这个类的名字就是Class。要注意小写关键了和大写关键字的区别。

Class类描述了那些属性呢?例如,类的名字的,类的属性,类所属包。类的方法。类的构造方法等等。

学习反射,首先要学习的就是Class类。class类是反射的根本。

Class代表JAVA类。那么它的实例对象又代表什么呢:

1、对应各个类在内存中的对应的字节码,

2、一个类被类加载器加载到内存中,占用一片存储空间,这片空间的内容就是类的字节码,不同类的字节码是不同的。所以他们在内存中的内容是不同的。这些空间可以用一个个的对象来表示。

如何得到各个字节码对应的对象呢,有三种方法,

方法一:字节码的文件名: Class cls1 = Data.class //字节码

Class cls2 = Person.class //字节码

方法二:创建一个实例对象,调用实例对象的getClass()方法。 p1.getClass();

方法三,通过一个静态方法: Class.forName(“java.lang.string”)

forName()方法作用:

1、得到已经加载到内存中的字节码的类名。

2、通过类加载器加载字节码,并取得字节码的类名。

有9个预定义的Class对象,int,byte,long,float,double,boolean,等,另外void也是一个基本的class对象。存在class.void.

反射的定义:

* 反射就是指把java类中的成分都转换成java类。例如,一个类中用一个Class类的对象来表示一个类中的组成部分,成员变量,变员方法,构造方法,包等信息,这些信息也用一个个java类来表示,

就像汽车是一个类,汽车中的发动机,变速箱也是一个个类。表示java类的Class类显然要提供一系统的方法来获得其中的方法,成员变量,包、修饰符等信息。这些信息就是用相应类的实例对象来表示,

他们是field Method Package Contructor

一个类的每一个成员都可以用相应的反映API的一个实例对象来表示,通过调用Class类的方法可以得到这些实例对象。得到这些实例对象后,有什么用呢,怎么用呢,就是反射所要学习的知识点。*/

public class ReflectionDemo {
public static void main(String[] args) throws Exception {
String str1 = "abc";
Class cls1 = str1.getClass();
Class cls2 = String.class;
Class cls3 = Class.forName("java.lang.String");
System.out.println("cls1 == cls2");
System.out.println("cls2 == cls3");
System.out.println(cls1.isPrimitive());
System.out.println(int.class.isPrimitive());
System.out.println(int.class == Integer.class);
System.out.println(int.class == Integer.TYPE);
System.out.println(int[].class.isPrimitive());
System.out.println(int[].class.isArray());

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: