java进阶之反射:反射基础之如何获取一个类以及如何获取这个类的所有属性和方法(1)

时间:2022-02-08 21:24:37

  java学习一段时间之后,大家可能经常会听到反射这个词,那么说明java已经学习到一个高一点的层次了。接下来我会一步步和大家一起揭开java高级特性反射的神秘面纱。

  首先介绍下类对象这个概念,可能会经常用到这个概念:

    类对象:java中有句很经典的话"万事万物皆对象",相信大家都不陌生,这句话告诉了我们java的特征之一,那就是面向对象。java中类的概念我们都很熟悉,既然万事万物皆是对象,那么类是谁的对象呢?<对象的概念:一个类的实例>换句话说,类是谁的实例。如此就有了类对象这个概念。在java中有个类的名字叫Class,任何一个类都是这个Class类的对象。

    下面用几行代码向大家展示如何获取类对象:

    1.新建一个包com.cx.bean,在包下创建一个类Book

Book.java文件

package com.cx.bean;

public class Book {
    private int id;
    private String name;
    private String type;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
}

  1.新建一个包com.cx.main,在包下创建一个类Test.

Test.java文件

package com.cx.main;
import com.cx.bean.Book; public class Test { public static void main(String[] args) { Class c1=null; Class c2=null; Class c3=null; /** * 获取类对象:类对象本身就是一个类 */ //第一种方式:通过Class对象的静态forName()方法参数为完整类路径名称 try { c1 = Class.forName("com.cx.bean.Book"); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println("第一种:"+c1);//:class com.cx.bean.Book //第二种方式:通过该类实例的getClass()方法获取类对象 Book bo=new Book(); Object ob=bo; System.out.println("第二种:"+ob.getClass()); //第三种:类名.class c3=Book.class; System.out.println("第三种:"+c3); } }
/**
运行结果:
  

第一种:class com.cx.bean.Book
第二种:class com.cx.bean.Book
第三种:class com.cx.bean.Book

通过这段代码可以清楚的向大家展示如何获取一个类对象.

*/