Java学习之反射机制学习总结--1

来源:互联网 发布:淘宝转让合法吗 编辑:程序博客网 时间:2024/06/08 06:09

1--认识Class类

正常情况下,必须知道类的完整路径名之后,才可以实例化对象;在Java中,也允许通过一个对象,找到其所在的类的信息,这就是Class类的功能

package com.reflection.demo;class X{};public class GetClassDemo01{public static void main(String args[]){X x = new X() ;// 实例化X类的对象System.out.println(x.getClass().getName()) ;// 得到对象所在的类}};
此时,所有的操作可以反着来

Object类的支持

在Object类中,定义了一个方法:public finally Class getClass()此方法被所有的子类继承,返回值的类型是一个Class类,此类事Java反射机制的源头,其实,反射就是可以通过对象反射求出类的名称。

正常情况下:

引入需要的包类名称---通过new实例化---取得实例化对象

反射情况下:

实例化对象---getClass()方法---得到完整的包类名称
Class类本身表示一个类的本身,通过getClass()可以完整得到一个类的完整结构,包括方法定义和属性定义。

此类在jdk文档中没有发现任何构造方法,所以此类的方法被私有化了。

实例化Class对象

(1)通过forName()

(2)类.class

(3)对象.getClass()

package com.reflection.demo;class A{};public class GetClassDemo02{public static void main(String args[]){Class<?> c1 = null ;// 指定泛型Class<?> c2 = null ;// 指定泛型Class<?> c3 = null ;// 指定泛型try{// 以下的操作形式是在开发中最常用的一种形式c1 = Class.forName("com.reflection.demo.A") ;}catch(ClassNotFoundException e){e.printStackTrace() ;}c2 = new A().getClass() ;// 通过Object类中的方法实例化c3 = A.class ;// 通过类.class实例化System.out.println("类名称:" + c1.getName())  ;// 得到类的名称System.out.println("类名称:" + c2.getName())  ;// 得到类的名称System.out.println("类名称:" + c3.getName())  ;// 得到类的名称}};
一旦可以实例化Class类后,就可以进行反射的进一步操作

0 0
原创粉丝点击