zoukankan      html  css  js  c++  java
  • JAVA反射基础

    反射:所有的框架的基础


    Class类是反射的基础

    Java提供了一套机制来动态获取类的信息以及动态调用对象的方法的功能,这套机制就叫——反射
    反射的API:
    Class类:代表一个类。
    Field 类:代表类的成员变量(成员变量也称为类的属性)。
    Method类:代表类的方法。
    Modifier类:代表修饰符。
    Constructor 类:代表类的构造方法。
    Array类:提供了动态创建数组,以及访问数组的元素的静态方法。

     -------------------------------------------------------------------------------------

    Class类常用方法:
    Object newInstance():创建此 Class 对象所表示的类的一个新实例 调用无参的构造方法
    Constructor<T> getConstructor(Class<?>... parameterTypes) 得到指定参数列表类型的构造方法 ...代表可变参数 可以给参数或不给 也可以给数组
    Field[] getFields():获得所有公有属性 包括父类的
    Field[] getDeclaredFields(): 获取所有属性 包括私有的 不包括父类
    Field getDeclaredField(String name):根据属性名获取一个属性包括私有 不包括父类的属性
    Field getField(String name):根据属性名获取一个公有属性 包括父类

    Method[] getMethods(); 获取所有公有方法 包括父类的方法
    Method[] getDeclaredMethods(); 获取所有方法 不包括父类方法 不包括构造方法
    Method getMethod(String name, Class<?>... parameterTypes) 根据方法名和参数类型的class对象 获取一个公有方法 包括父类
    Method getDeclaredMethod(String name, Class<?>... parameterTypes) 根据方法名和参数的类型的class对象 获取类的所有方法 不包括父类方法
    ---------------------------------------------------------------------------------------------------

    Field类常用方法:
    Modifier getModifiers():获得属性的修饰符
    Class getType() : 获得属性的类型 返回一个class对象
    void set(object obj,object value):给指定对象的当前field属性赋值
    object get(object) :获取指定对象的当前field属性的值
    void setAccessible(true); 如果需要强制访问类的私有成员 设置为true 安全考虑一般不建议

    ----------------------------------------------------------------------------------------------------

    Method类常用方法:
    Object invoke(Object obj, Object... args) 调用指定对象的指定方法 ...代表可变参数 可以给参数或不给 也可以给数组
    Class[] getParameterTypes() :获得方法的所有参数类型
    object getReturnType():获得方法的返回值类型

    --------------------------------------------------

    Array 类提供了动态创建和访问 Java 数组的方法。 
    static Object newInstance(Class<?> componentType,int... dimensions):创建一个多维动态数组 第一个参数指定元素类型,第二个指定每个维度的长度
    static Object newInstance(Class<?> componentType, int length) :创建一个一维度数组 第一个参数指定元素类型,第二个指定数组长度

    static void set(Object array, int index, Object value):设置指定数组 指定索引的元素为指定值
    static Object get(Object array, int index):获取数组指定索引的元素
    static int getLength(Object array):获取数组长度

  • 相关阅读:
    CSS3 动画--- CSS3 animation
    CSS3 3D变形 transform---rotateX(), rotateY(), rotateZ(), 透视(perspective)
    CSS3 2D变形 transform---移动 translate(x, y), 缩放 scale(x, y), 旋转 rotate(deg), transform-origin, 倾斜 skew(deg, deg)
    CSS3 过渡---transition
    情人节用Python智能聊天机器人的实现|制作一个虚拟恋人
    Python基础知识详解 从入门到精通(七)类与对象
    Python核心编程:8个实践性建议
    给Python初学者的一些编程技巧
    30分钟编写一个抓取 Unsplash 图片的 Python爬虫
    Python反编译调用有道翻译(附完整代码)
  • 原文地址:https://www.cnblogs.com/java888/p/10384447.html
Copyright © 2011-2022 走看看