反射机制(1)认识Class类

认识Class类:

正常情况下,必须指定类的完整路径才能实例化对象,但是java中也允许通过一个对象找到其所在类的信息。这实际就是class类的功能。

package 类集;

class X{
};
public class test1{
    public static void main(String args[]){
        X x = new X() ;    // 实例化X类的对象
        System.out.println(x.getClass().getName()) ;    // 得到对象所在的类
    }
}

运行结果:

类集.X

object类有如下优点:

CLASS类

  Class本身表示一个类本身,通过class可以得到一个类中完整结构,包括此类的方法定义,方法属性等。

常用方法:

实例化class类对象的三种方法:

1,通过forName(包。类名称)方法。

2,类。class  

3,对象。getClass()

一,其中forName定义如下:实例化是forName(包.类名称)

public static Class<?> forName(String className)
                        throws ClassNotFoundException

可见,使用forName()需要处理异常。

二,getClass()是object类的方法,对象.getClass()

三,类。class。

四,通过getName(),可以获取类名称。

如下例子:

package 类集;

class X{
};
public class test1{
    public static void main(String args[]){
        Class<?> c1 = null ;        // 指定泛型
        Class<?> c2 = null ;        // 指定泛型
        Class<?> c3 = null ;        // 指定泛型
        try{
            // 以下的操作形式是在开发中最常用的一种形式
            c1 = Class.forName("类集.X") ;  //forName(包.类名称)
        }catch(ClassNotFoundException e){
            e.printStackTrace() ;
        }
        c2 = new X().getClass() ;        // 通过Object类中的方法实例化
        c3 = X.class ;    // 通过类.class实例化
        System.out.println("类名称:" + c1.getName())  ;    // 得到类的名称
        System.out.println("类名称:" + c2.getName())  ;    // 得到类的名称
        System.out.println("类名称:" + c3.getName())  ;    // 得到类的名称
    }
}

一旦实例化Class类后,即可进行反射的进一步操作。

总结

1,了解class类的作用:反射源头,

2,三种class类的实例化方式,要以forName()重点掌握,还有 类.class

原文地址:https://www.cnblogs.com/alsf/p/6538482.html