广告
返回顶部
首页 > 资讯 > 后端开发 > Python >新手了解java 反射基础知识
  • 232
分享到

新手了解java 反射基础知识

2024-04-02 19:04:59 232人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、反射概述二、常用api三、创建Class对象的四种方式总结一、反射概述 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection

一、反射概述

Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意 对象的内部属性及方法。 加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象 (一个类只有一个Class对象),这个对象就包含了完整的类的结构信 息。我们可以通过这个对象看到类的结构,这个对象就像一面镜子,透 过这个镜子看到类的结构,所以我们形象的称之为反射。

二、常用api

java.lang.Class:代表一个类

java.lang.reflect.Method:代表类的方法

java.lang.reflect.Field:代表类的成员变量

java.lang.reflect.Constructor:代表类的构造器

static Class forName(String name) 返回指定类名 name 的 Class 对象

Object newInstance() 调用无参构造函数,返回该Class对象 的一个实例

getName() 返回此Class对象所表示的实体(类、 接口、数组类、基本类型或void)名称

Class getSuperClass() 返回当前Class对象的父类的Class对象

Class [] getInterfaces() 获取当前Class对象的接口

ClassLoader getClassLoader() 返回该类的类加载器

Class getSuperclass() 返回表示此Class所表示的实体的超类的Class

Constructor[] getConstructors() 返回一个包含某些Constructor对象的数组

Field[] getDeclaredFields() 返回Field对象的一个数组 Method

getMethod(String name,Class … paramTypes) 返回一个Method对象,此对象的形参类型为paramType

示例:


public class Person {
    private String name;
    private int age;
    public Person() {
        System.out.println("Person类被初始化了。。。。。^_^");
    }
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
            "name='" + name + '\'' +
            ", age=" + age +
            '}';
    }
}

反射


public class ClassDemo {
    public static void main(String[] args) throws
        Exception {
        // 1. 创建Class对象
        //Class<Person> clazz = (Class<Person>)
        Class.forName("Person");
        Class<?> clazz =Class.forName("Person");
            // 2. 通过Class对象调用其方法
            // 2.1. 通过反射来实例化对象
            //Person person = clazz.newInstance();
            Object o = clazz.newInstance(); // 此名就相当于
        Person p = new Person()
            // 2.2. 获取类的完整类名称(包名+类名)
            String name = clazz.getName();
        System.out.println(name);
        // 2.3. 获取类的简单名称,就是类的名称,不含包名
        System.out.println(clazz.getSimpleName());
        // 2.4. 获取构造器
        Constructor<?>[] constructors =
            clazz.getConstructors();
        for (Constructor<?> constructor :
             constructors) {
            System.out.println(constructor.getName());
        }
        // 2.5. 获取字段
        Field[] fields = clazz.getFields();
        for (Field field : fields) {
            System.out.println(field.getName());
        }
        // 2.6. 获取方法
        Method[] methods = clazz.getMethods();
        for (Method method : methods) {
            System.out.println(method.getName());
        }
    }
}

三、创建Class对象的四种方式


public class Demo {
    public static void main(String[] args) throws
        Exception {
        // 第一种方式:调用Class.forName()
        Class clazz =Class.forName("java.lang.String");
        // 第二种方式:通过类的字节码文件来创建
        Class clazz1 = String.class;
        // 第三种方式:通过调用对象的getClass()方法来创建
        String str = new String();
        Class clazz2 = str.getClass();
        // 第四种:通过类装载器来创建
        ClassLoader loader =String.class.getClassLoader();
        Class<?> clazz3 =loader.loadClass("java.lang.String");
    }
}

总结

本篇文章就到这里了,希望对你有所帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: 新手了解java 反射基础知识

本文链接: https://www.lsjlt.com/news/129851.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 新手了解java 反射基础知识
    目录一、反射概述二、常用api三、创建Class对象的四种方式总结一、反射概述 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection...
    99+
    2022-11-12
  • 新手了解java基础知识(一)
    目录1.java基础1.1Java历史1.2Java特点1.2.1 简单性1.2.2 面向对象1.2.3 分布式(微服务)1.2.4 健壮性1.2.5 安全性1.2.6 体系结构中立...
    99+
    2022-11-12
  • 新手了解java基础知识(二)
    目录算数运算符例子关系运算符例子逻辑运算符例子赋值运算符Java运算符优先级总结算数运算符 算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。 ...
    99+
    2022-11-12
  • 新手了解java IO基础知识
    目录一、File类1、简介2、创建方式3、常用方法二、IO概念1.什么是输入2.什么输出(Output)三、流的分类1、InputStream(字节流)2、OutputStream(...
    99+
    2022-11-12
  • 新手了解java 集合基础知识
    目录一、概述Java集合体系结构:二、collection1、List1)ArrayList2)LinkedList2、set1)HashSet2)TreeSet1.实体类2.测试类...
    99+
    2022-11-12
  • 新手了解java 数组基础知识
    目录1、数组的定义2、array 遍历3、List和array 之间的转换1、数组转list2、list 转数组3、Arrays工具类4、可能遇到的问题总结1、数组的定义 ...
    99+
    2022-11-12
  • 新手了解java 泛型基础知识
    目录1、什么是泛型2、泛型的使用规则3、泛型应用实例总结1、什么是泛型 ​ 泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类...
    99+
    2022-11-12
  • 新手了解java 多线程基础知识
    目录一、线程的生命周期JDK中用Thread.State类定义了线程的几种状态:二、线程同步1、为什么要有线程同步2、synchronized2.1同步代码块2.2同步方法3、Loc...
    99+
    2022-11-12
  • 新手了解java 异常处理基础知识
    目录一、异常体系结构1.什么是异常2.异常的体系结构二、异常处理throw 与 throws三、自定义异常运行时异常编译时异常总结一、异常体系结构 1.什么是异常 在java程序运行...
    99+
    2022-11-12
  • 新手了解java 类,对象以及封装基础知识
    目录1、类2、对象3.方法的重载 什么是方法的重载4、构造器 什么是构造方法构造方法语法:构造方法特点5.this this指代当前对象,即哪个对象调用就指代哪个对象6.封装封装的作...
    99+
    2022-11-12
  • Java基础之反射技术相关知识总结
    目录一、反射概念二、反射应用场景三、反射更多细节一、反射概念 Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类...
    99+
    2022-11-12
  • Java基础之反射详解
    目录前言一、一个需求引出反射二、反射入门三、反射原理图四、反射相关类五、反射调用优化前言 反射是我们框架的灵魂,反射也是我们框架的一个底层基石,没有反射也就没有框架,如果我们学好了反...
    99+
    2022-11-12
  • 【Java 基础篇】Java 反射详解
    文章目录 导言一、反射的概念二、反射的原理三、反射的使用示例四、反射的应用场景五、反射的注意事项总结 导言 Java反射是指在运行时动态地获取类的信息,并可以通过该信息来操作类或对象。...
    99+
    2023-09-14
    java python 开发语言
  • 【Java 基础篇】Java反射:深入了解Class对象
    Java是一门强类型语言,它要求在编译时知道所有的类和对象类型。然而,有时候我们需要在运行时动态地获取和操作类的信息,这就是Java反射的用武之地。本文将深入探讨Java反射,特别是与Class对象...
    99+
    2023-10-27
    java python 开发语言 ajax 网络 eclipse git 原力计划
  • 简单了解mysql基础知识
    下面一起来了解下mysql基础知识,相信大家看完肯定会受益匪浅,文字在精不在多,希望mysql基础知识这篇短内容是你想要的。           ...
    99+
    2022-10-18
  • java最新基础知识面试题
    java最新基础知识面试题1、static关键字什么意思?java中是否可以覆盖一个private或者是static的方法?“static”表明一个成员变量或者是成员方法可以在没有所属类的实例变量的情况下访问。java中static方法不能...
    99+
    2014-06-09
    java面试题 java 面试题 基础
  • Java反射机制基础详解
    目录1、什么是Java反射机制?2、反射机制原理3、Class类介绍3.1、Class类基本介绍3.2、Class类对象的获取方法Class.forname()3.3、可以获取Cla...
    99+
    2022-11-12
  • ASP新手要知道的基础知识有哪些
    ASP新手要知道的基础知识有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们都知道,ASP是Active Server Page的缩写,意为“动态服务器页...
    99+
    2023-06-17
  • 3000字扫盲shell基础知识(新手必备)
    不论前端还是后端,再学会linux的基础上,还应该学会写一些简单的Shell。不止是工作,日常中想做一些东西,如果手动做就很累人也费时间,如果你会用Shell脚本处理就很简单了,本文普及的shell的一些基础知识。后面还...
    99+
    2022-06-04
    shell入门 shell基础知识
  • 了解 MySQL 中外键的基础知识?
    外键可用于创建表之间的关系。外键关系可以是一对一或一对多。外键与另一个表的另一个字段匹配。 一对一关系 - 一个表中的一条记录将链接到另一个表中的一条记录。 一对多关系 - 一条记录将链接到另一个表中的多条记录。 下面是一个例子。首先,我们...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作