首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Oracle培训(十六)——Core Java第十六章知识点小结——反射

2012-09-18 
Oracle培训(十六)——Core Java第十六章知识点总结——反射Core Java第十六章知识点总结——反射知识点预览类对

Oracle培训(十六)——Core Java第十六章知识点总结——反射

Core Java第十六章知识点总结——反射


知识点预览


类对象

获取类对象的方式

反射包java.net.reflect

反射的作用


思考

 

1. 给定一个对象,要求输出这个对象的所有方法

public static void printMethod(Objectobject);

2.给顶一个字符串参数,这个参数表示一个类的名字,根据类名,创建该类的一个对象并返回

public static Object createObject(StringclassName);

 

类对象

 

1.java.lang.Class类的对象

类继承自哪个类

实现了哪些接口

有哪些属性

有哪些方法

有哪些构造方法

……


2.保存类的信息

.class读到JVM后用一个类存储

例:动物园里的熊猫笼子 笼子外面的熊猫标识牌(可以看成类对象)


获取类对象的方式(三种)

1. 类名.class

Class c = Student.class;

Class i = int.class();//8种基本数据类型也有类对象


2. getClass()方法(Object类定义)

以前讲的获取对象的实际类型(不准确),应该是获得某个类的类对象

Student s = new Student();

Class cs1 = s.getClass();

Class cs2 = Student.class;

不管是类的什么对象,不管以什么方式,获得的都是同一个类对象


3.Class.forName()方法

public static Class forName(String className) throws ClassNotFoundException

 

Class c = Class.forName(“ex04.Student”);//全限定名

Class.forName():类加载方法


4. 本章中使用的Student类的定义:

 

package chp16.ex10;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.lang.reflect.Method;/** *  * @Author: Wentasy * @FullName: TestStudent.java * @Description: 反射的好处:应用反射的代码,增加程序的通用性 * @Create Date: 2012-8-20 */public class TestStudent {   public static void main(String args[])throws Exception{   InputStream is = new FileInputStream("refelection.txt");   InputStreamReader ir = new InputStreamReader(is);   BufferedReader br = new BufferedReader(ir);   String className = br.readLine();   String methodName = br.readLine();            Class c = Class.forName(className);   Object o = c.newInstance();      Method m = c.getDeclaredMethod(methodName);   m.setAccessible(true);   m.invoke(o);         }}//refelection.txt内容://ex20.Student//play


 

热点排行