Java的反射机制

一.Java反射机制的概念

1.Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为 Java 语言的反射机制。简单来说,反射机制指的是程序在运行时能够获取自身的信息。在 Java 中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。

2.Class类:是描述类的一个类,Class类是在Java语言中定义一个特定类的实现。一个类的定义包含成员变量,成员方法,还有这个类实现的接口,以及这个类的父类。Class类的对象用于表示当前运行的Java应用程序中的类和接口。比如:每个数组均属于一个Class类对象,所有具有相同元素类型和维数的数组共享一个Class对象。基本的Java类型(Boolean,byte,char,short,int,long,float和double)和void类型也可表示为Class对象

二.理解Class类

1、Field类

提供有关的属性信息,以及对它的动态访问权限。它是一个封装反射类的属性的类

2、Constructor类

提供有关类的构造方法得信息,以及对它的动态访问权限。它是一个封装反射类的构造方法的类

3、Method类

提供关于类的方法得信息,包括抽象方法。它是用来封装反射类方法的一个类

4、Class类

表示正在运行的java应用程序中的类的实例

5、Object类

Object是所有java类的父类。所有对象都默认实现了Object类的方法

三.代码演示

  1. 在dao包中写BookDao接口以及BookDaoImpl实现类

package com.yue.dao;

public interface BookDao {
    public void add();
}
package com.yue.dao.impl;

import com.yue.dao.BookDao;

public class BookDaoImpl implements BookDao {
    @Override
    public void add() {
        System.out.println("BookDaoImpl...add");
    }
}

2.在service包中写BookService接口以及BookServiceImpl实现类以及BookServiceVip实现类

package com.yue.service;

public interface BookService {
    public void add();

    public void fun();
}
package com.yue.service.impl;


import com.yue.dao.BookDao;
import com.yue.dao.impl.BookDaoImpl;
import com.yue.service.BookService;

public class BookServiceVip implements BookService {
    BookDao bookDao=new BookDaoImpl();
    @Override
    public void add() {
        System.out.println("BooKServiceVip...add");
        bookDao.add();
    }

    public void fun(){
        System.out.println("BookServiceImpl...fun");
    }
}
package com.yue.service.impl;

import com.yue.dao.BookDao;
import com.yue.dao.impl.BookDaoImpl;
import com.yue.service.BookService;

public class BookServiceImpl implements BookService {
    //类的属性---存储数据
    public String name;
    int age;
    protected String sex;
    private String address;

    //类的构造方法---用来构造对象
    public BookServiceImpl() {
    }

    public BookServiceImpl(String name) {
        this.name = name;
    }

    private BookServiceImpl(String name, int age, String sex, String address) {
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.address = address;
    }


    BookDao bookDao=new BookDaoImpl();

    //功能方法---完成一些程序或者功能
    @Override
    public void add() {
        System.out.println("BookServiceImpl...add");
        bookDao.add();
    }

    public void fun(){
        System.out.println("BookServiceImpl...fun");
    }
}

3.写测试类

package com.yue.servlet;

import com.yue.service.BookService;
import com.yue.service.impl.BookServiceVip;
import org.junit.Test;

public class BookServlet {
    BookService bookService=new BookServiceVip();

    @Test
    public void add(){
        System.out.println("BookServlet...add");
        bookService.add();
    }
}

最终运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值