zoukankan      html  css  js  c++  java
  • java的反射机制

    1、Java反射机制概念

      Java 反射机制在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种 动态的获取信息 以及 动态调用对象的方法 的功能称为 java 的反射机制。

      类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在Jvm的方法区内,然后在区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。Class对象是由Jvm自动生成的,每当一个类被载入时,Jvm就自动为其生成一个Class对象。Java 程序可以加载一个运行时才得知名称的 .class 文件,然后获悉其完整构造,并生成其对象实体、或对其 fields(变量)设值、或调用其 methods(方法)
     

    2、获得泛型的实现类实例

    代码演示:
    /**
       定义实体类Teacher(T) 
    */
    package core.shu.com.demo;
    
    public class Teacher {
    
    }
    
    /**
       定义泛型接口IDataAccessService<T>
    */
    public interface IDataAccessService<T> {
    
    }
    
    /**
       定义实现类TeacherAccessService,实现泛型接口IDataAccessService<T>
    */
    public class TeacherAccessService implements IDataAccessService<Teacher> {
    
    }
    
    /**
       定义两个泛型的抽象方法
    */
    public abstract class ReflectBusinessService<T, S extends IDataAccessService<T>> {
    
        void method() {
            System.out.println(entityClass);
            System.out.println(entityClass.getName());
            System.out.println(entityClass.getSimpleName());
            System.out.println(entityClass.getTypeName());
        }
    
        @SuppressWarnings("unchecked")
        protected Class<T> entityClass = (Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass())
            .getActualTypeArguments()[0];
       
    
    }
    
    /**
       定义测试类
    */
    public class TeacherBusinessService extends ReflectBusinessService<Teacher, TeacherAccessService> {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            TeacherBusinessService service = new TeacherBusinessService();
            service.method();
        }
        
    //    void method() {
    //        System.out.println("submethod");
    //    }
    
    }

    结果:

    class core.shu.com.demo.Teacher
    core.shu.com.demo.Teacher
    Teacher
    core.shu.com.demo.Teacher

     
     
     
     
     
     
     
  • 相关阅读:
    模式识别 第一章 概论
    高等代数9 欧几里得空间
    离散数学6 初等数论
    高等代数6 线性空间
    高等代数5 二次型
    GMOJ 6870. 【2020.11.17提高组模拟】ckw的树 (tree)
    1
    Virtual Tree 学习笔记
    [2020.11.14提高组模拟] 鬼渊传说(village)
    企业购置新车,各项费用会计入账以及案例分析
  • 原文地址:https://www.cnblogs.com/Lambquan/p/12012533.html
Copyright © 2011-2022 走看看