清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第16章 反射

第16章 反射 类别载入与检视 使用反射生成与操作对象
第16章 • 反射 – 类别载入与检视 – 使用反射生成与操作对象

简介Cass与类别载人 真正需要使用一个类别时才会加以加载 java. lang Class对象代表了Java应用程序在 运行时所加载的类别或接口实例 可以透过○ eject的 getclass(0方法来取得每 个对象对应的Cass对象,或者是透过 class"常量( Classliteral
简介Class与类别载入 • 真正需要使用一个类别时才会加以加载 • java.lang.Class对象代表了Java应用程序在 运行时所加载的类别或接口实例 • 可以透过Object的getClass()方法来取得每 一个对象对应的Class对象,或者是透过 "class"常量(Classliteral)

简介C|ass与类别载人 string name caterpillar i Class stringclass =name getClass() System.out. print1n("类别名称:"+ stringClass. getName()) System.out. print1n("是否为接口:"+ stringclass. isInterface ())i System.out. println("是否为基本型态:"+ stringclass imPrimitive())i System.out. print1n("是否为数组对象:"+ stringclass. isArray() System.out. print1n("父类别名称:"+ stringclass. getSuperclass().getName())i Class stringclass String class
简介Class与类别载入 String name = "caterpillar"; Class stringClass = name.getClass(); System.out.println("类别名称:" + stringClass.getName()); System.out.println("是否为接口:" + stringClass.isInterface()); System.out.println("是否为基本型态:" + stringClass.isPrimitive()); System.out.println("是否为数组对象:" + stringClass.isArray()); System.out.println("父类别名称:" + stringClass.getSuperclass().getName()); Class stringClass = String.class;

简介 Class与类别载入 所谓「真正需要」通常指的是要使用指定 的类别生成对象 例如使用 Class. forNameo加载类别’或是 使用 Classloader的 Jloadclass0载人类别 public class TestClass i tatic i System.out. println("类别被载人") TestClass test null System.out. print1n("宣告 Tes tc1ass参考名称") test new Testclass( System.out. print1n("生成 Tes tc1ass实例");
简介Class与类别载入 • 所谓「真正需要」通常指的是要使用指定 的类别生成对象 • 例如使用Class.forName()加载类别,或是 使用ClassLoader的loadClass()载入类别 public class TestClass { static { System.out.println("类别被载入"); } } TestClass test = null; System.out.println("宣告TestClass参考名称"); test = new TestClass(); System.out.println("生成TestClass实例");

简介C|ass与类别载人 Class的讯息是在编译时期就被加入 至.c!ass档案中 ·执行时期JVM在使用某类别时,会先检查 对应的Cass对象是否已经加载 如果没有加载,则会寻找对应的c!ass档案 并载人
简介Class与类别载入 • Class的讯息是在编译时期就被加入 至.class档案中 • 执行时期JVM在使用某类别时,会先检查 对应的Class对象是否已经加载 • 如果没有加载,则会寻找对应的.class档案 并载入

简介Cass与类别载入 一个类别在JM中只会有一个Cass实例 每个类别的实例都会记得自己是由哪个 Cass实例所生成 可使用 getClass0或cass来取得 Class实例 class java. lang String getc|ass0 String物件 stng物件9ecas9 String物件 getclass
简介Class与类别载入 • 一个类别在JVM中只会有一个Class实例 • 每个类别的实例都会记得自己是由哪个 Class实例所生成 • 可使用getClass()或.class来取得Class实例

简介C|ass与类别载人 数组是一个对象,也有其对应的Cas实例 System. out. println(boolean class)i System. out. println(void. class)i int[] iarr new int [10]i System. out. println(iarr getClass(). tostring()) double[ darr new double [10] System. out. println(darr. getclass(). tostring()) boolean void class [i class [d
简介Class与类别载入 • 数组是一个对象,也有其对应的Class实例 System.out.println(boolean.class); System.out.println(void.class); int[] iarr = new int[10]; System.out.println(iarr.getClass().toString()); double[] darr = new double[10]; System.out.println(darr.getClass().toString()); boolean void class [I class [D

从 Class中获取信息 Class对象表示所加载的类别,取得 Class 对象之后,您就可以取得与类别相尖联的 信 套件的对应型态是 java. lang Package 建构方法的对应型态是 java. lang reflect Constructor 方法成员的对应型态是 java. lang. reflect Method 数据成员的对应型态是 java. lang reflect Field
从Class中获取信息 • Class对象表示所加载的类别,取得Class 对象之后,您就可以取得与类别相关联的 信息 – 套件的对应型态是java.lang.Package – 建构方法的对应型态是 java.lang.reflect.Constructor – 方法成员的对应型态是 java.lang.reflect.Method – 数据成员的对应型态是java.lang.reflect.Field

从 Class中获取信息 ry Class c =Class forName(args[o])i Package p =c. getPackage()i System. out. println(p getName())i catch(Array IndexOutofBoundsException e) System.out. print1n("没有指定类别"); catch(ClassNotFoundException e)t System.out. print1n("找不到指定类别")
从Class中获取信息 try { Class c = Class.forName(args[0]); Package p = c.getPackage(); System.out.println(p.getName()); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("没有指定类别"); } catch(ClassNotFoundException e) { System.out.println("找不到指定类别"); }

从 Class中获取信息 Class c= Class. forName(args[o]) //取得套件代表对象 Package p getPackage( System. out. printf( package sion",p getName())i //取得型态修饰’像是c1ass丶 interface nt m retModifiers ( System. out.print(Modifier tostring(m)+)i //如果是接口 if(Modifier. isInterface(m)) System. out. print(interface)i e⊥se System. out. print (" class )i System. out. println(c getName()+ f")
从Class中获取信息 Class c = Class.forName(args[0]); //取得套件代表对象 Package p = c.getPackage(); System.out.printf("package %s;%n", p.getName()); //取得型态修饰,像是class、interface int m = c.getModifiers(); System.out.print(Modifier.toString(m) + " "); //如果是接口 if(Modifier.isInterface(m)) { System.out.print("interface "); } else { System.out.print("class "); } System.out.println(c.getName() + " {");
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第15章 线程.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第14章 输入、输出.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第13章 对象容器.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第12章 泛型(Generics).ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第11章 枚举类型.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第10章 例外处理.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第9章 管理类别档案.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第8章 继承、多型.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第7章 封装.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第6章 字串.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第5章 数组.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第4章 从autoboxing、unboxing认识对象.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第3章 语法入门.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第2章 入门准备.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第1章 了解Java.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第1章 oracle数据库概述.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第16章 基于Oracle数据库的应用开发.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第15章 PLSQL程序设计.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第14章 SQL语言基础.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第13章 网络管理.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第17章 Annotation.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第18章 舍遗补缺.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第19章 文本编辑器.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第20章 JDBC入门.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第21章 Java SE6新功能简介.ppt
- 《C语言程序设计》课程教学资源(PPT课件)PPT课件 第五章 数组.ppt
- 南开大学:《上机试习题集—二级C语言程序设计》PDF电子书(编程和改错各100例).pdf
- 《Flash动画设计教程》PPT教学课件(共五章).ppt
- 陕西科学技术出版社:《计算机基础实用教程》PDF电子书(共六章).pdf
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第七章 系统设计.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第一章 绪论(主讲:郑莉).ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十章 C++标准模板库.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十一章 流类库与输入/输出.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十二章 异常处理.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十三章 MFC库与Windows程序开发概述.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第二章 C++简单程序设计.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第三章 函数.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第四章 类与对象.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第五章 C++程序的结构.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第六章 数组指针与字符串.ppt