黑马程序员——反射基础

来源:互联网 发布:淘宝网页制作教程 编辑:程序博客网 时间:2024/06/15 05:01


程序运行时需要字节码文件,当用到一个类的时候就会加载它的字节码到内存中去,所有的字节码对象都属于Class这个类型

得到字节码对象有三种方式

第一种


可以用Class来得到该类的字节码对象

Class cl  = Class.forName("类的全名(前面包括包名)")



第二种


直接用类名.class得到


Class cl = String.class


第三种


当该类有了实例对象时


String s = new String();

Class cl = s.getClass()



经常使用的是第一种方式,因为用反射的时候在程序运行时还不知道类的名字



九个预定义Class对象


它们是八大基本数据类型加一个void类型


它们都有自己的字节码对象





程序中每个类在内存中都只有一份字节码对象

public class Test {public static void main(String[] args) throws Exception{String s = new String();Class c1 = s.getClass();Class c2 = String.class;Class c3 = Class.forName("java.lang.String");System.out.println(c1 == c2);System.out.println(c1 == c3);}}

结果:

true

true


无论那种方法得到的但它们都是同一份字节码对象



Class还有一个可以判定基本数据类型的方法isPrimitive()


public class Test {public static void main(String[] args) throws Exception{String s = new String();Class c1 = s.getClass();Class c2 = int.class;System.out.println(c1.isPrimitive());System.out.println(c2.isPrimitive());}}

结果:

false

true






0 0
原创粉丝点击