• 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

     
     
     
     
     
     
     
  • 相关阅读:
    20201208史逸霏第六章学习笔记
    第三章笔记
    实现ls
    mystat
    改进ls
    第十章笔记
    cat userlist
    第七、八章笔记
    mypwd
    类成员函数指针写入map里怎么才能调用它呢?转载
  • 原文地址:https://www.cnblogs.com/Lambquan/p/12012533.html
Copyright © 2020-2023  润新知