Java反射机制——调用方法、获取父类和父接口

第1章第11节:创建可容纳多行滚动文字的输入框TextEditor [SwiftUI快速入门到实战] TextField可以让用户输入单行的文字内容,若想输入多行的文字内容,可以使用能够容纳多行滚动文字的 TextEditor。 定义一个字符串属性,用来存储用户输入的文字内容。接着定义一个布尔属性,用来标识是否弹出警告窗口,以显示用户输入的内容。 TextEditor是由UIKit中的UITextView演变而来,因此可以在init方法中,通过UITextView修改TextEditor的外观属性。 添加一个VStack视图,作为子视图的容器。 创建一个TextEditor,Te.. 阅读详情

一、反射机制去调用方法(重点)

反射机制。让代码具有通用性,可变化的内容都是写到配置文件里面去,将来修改配置文件之后,创建的对象不一样,调用的方法也不同。但是Java源代码不需要做任何的改动。这就是反射机制的魅力。。

测试:

import java.lang.reflect.Method;
public class test03 {
    /*重点:必须掌握,通过反射机制怎么调用一个对象的方法?*/
    public static void main(String args[]) throws Exception {
        //获取一个类
        Class studentServiceClass = Class.forName("src.refect.StudentService");
        //创建对象
        Object obj = studentServiceClass.newInstance();
        //获取Method(区分一个方法用”方法名和形参“区分)
        Method loginmethod = studentServiceClass.getDeclaredMethod("login",String.class,String.class);
        //调用方法(该方法是反射机制中最重要的方法,必须记住)
        //调用方法的四要素:
        /*
        * invoke:调用的意思
        * loginmethod:方法
        * obj:对象
        * returnValue:返回值*/
        //调用obj对象的loginmethod方法传递”“"root","123"这个参数:
        Object returnValue = loginmethod.invoke(obj,"root","123");
        System.out.println(returnValue);//true
    }
}

上面代码所获取的类如下所示:

package src.refect;
public class StudentService {
    public Boolean login(String name,String password){
        if ("root".equals(name)&&"123".equals(password)){
            return true;
        }
        return false;
    }
}

二、利用反射机制获取父类和父接口(重点)

一个类,怎么获取这个类的父类,已经实现了哪些接口?

测试:

public class test03 {
    /*重点:必须掌握,通过反射机制怎么获取父类和父接口?*/
    public static void main(String args[]) throws Exception {
        //获取一个类
        Class stringClass = Class.forName("java.lang.String");
        //获取父类
        Class superClass = stringClass.getSuperclass();
        System.out.println(superClass.getSimpleName());//输出:Object
        //获取父接口【获取String类实现的所有接口(一个类可以实现多个接口)】
        Class[] interfaces = stringClass.getInterfaces();
        for (Class i:interfaces){
            System.out.println(i.getName());
            /*  运行结果:
                java.io.Serializable
                java.lang.Comparable
                java.lang.CharSequence*/
        }
    }
}

参考内容:

如下所示String类是继承Object类,其实现的接口有java.io.Serializable, Comparable<String>, CharSequence三个父接口

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {}

三、反射Method(了解一下)

类StudentService;

package src.refect;
public class StudentService {
    public Boolean login(String name,String password){
        if ("root".equals(name)&&"123".equals(password)){
            return true;
        }
        return false;
    }
    public void logout(){
        System.out.println("退出登录系统!");
    }
}

反编译以上类中的方法:

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class test03 {
    /*反射Method*/
    public static void main(String args[]) throws Exception {
        //获取类
        Class StudentServiceClass = Class.forName("src.refect.StudentService");
        //获取所有的Method
        Method[] methods = StudentServiceClass.getDeclaredMethods();
        //System.out.println(methods.length);//2
        //遍历Method
        for (Method method : methods) {
            //获取修饰符列表
            System.out.println(Modifier.toString(method.getModifiers()));
            //获取返回值类型
            System.out.println(method.getReturnType().getSimpleName());
            //获取方法名
            System.out.println(method.getName());//login    logout
            //获取方法的修饰符列表参数类型
            Class[] parameterTypes = method.getParameterTypes();
            for (Class parameterType: parameterTypes ){
                System.out.println(parameterType.getSimpleName());
            }
        }
    }
}

如果你觉得博主的文章的不错或者对你有帮助,可以点一个免费的关注支持一下博主,你的鼓励将是我创作的最大动力!! 

Spring AI 实战:第五章、Spring AI本地模型部署之省钱小能手 白嫖的快乐你想象不到经过这番折腾,我们成功实现了零成本使用大模型完全本地运行保障隐私可视化访问Java生态无缝集成但可能有的小伙伴要吐槽,怎么换个底层模型这次就新建一个工程了呢?不能在以前的工程上开发吗?这样也太不优雅了吧~,我知道你很急,但先别急,等下一章节再来解决这个问题。为什么程序员特别喜欢Ollama?因为它就像一只温顺的羊驼——不花钱还能24小时产出代码! 阅读详情

相关推荐

在 Windows 系统下使用 VMware 安装 Ubuntu 24.04 LTS 系统

Ubuntu24.04桌面端官方下载:https://cn.ubuntu.com/download/desktop。

u014695938的博客 1万+

反射_通过反射调用类中指定方法、属性

一、调用指定方法通过反射,调用类中的方法,通过Method类完成。步骤:1、通过Class类的getMethod(String name,Class.......parameterTypes)方法取得一个Method对象,并设置此方法操作时所需要的参数类型。2、使用Object invoke(Object obj,Object[ ] args)进行调用,并向方法中传递要设置的obj对象的参数信息。...

一颗洛米 6882

《C语言小游戏之贪吃蛇程序代码》

//为广大编程游戏爱好者提供一个参考的游戏源代码#include&lt;stdio.h&gt;#include&lt;conio.h&gt;#include&lt;windows.h&gt;#include&lt;time.h&gt;#define framex 5#define framey 5#define wide 20#define high 20int i,j,a[2];//将光标移动到...

qq_42052821的博客 2万+

Java反射系列(2):从Class获取父类方法说起

java反射获取父类方法

weigeshikebi的博客 6764

Windows显卡TDR超时导致Unity崩溃?手把手教你修改注册表延长响应时间

本文详细解析了Windows显卡TDR超时导致Unity崩溃的问题,并提供了修改注册表延长响应时间的完整解决方案。通过调整TdrDelay和TdrDdiDelay键值,开发者可以有效避免D3D11设备丢失错误,提升Unity编辑器的稳定性。文章还包含显卡驱动优化、系统性能调优等实用技巧,帮助开发者彻底解决编辑器崩溃问题。

weixin_33737774的博客 621

物联网 Mixly-智能楼道灯

一、实验目的及要求 熟悉声音及人体红外传感器用法。 二、实验原理与内容 1.使用声音传感器实现声控灯功能。 2.使用人体红外传感器实现人体检测控制灯功能。 三、实验软硬件环境 硬件:Arduino、LED灯、声音传感器、人体红外传感器 软件:Mixly IDE 四、实验过程(实验步骤、记录、数据、分析) 核心代码截图 声控灯: 人体红外检测灯: 3.实验效果图: (1)、声控灯总线连接: (1)、声控灯声音大于一某个值时灯亮,经过2秒后灯灭: (3)、人体红外检测灯连接总线: (4)、人体红外

qq_43430810的博客 1917

【java学习—十四】反射获取类的父类、接口、构造方法、方法(3)

其中父类为Person类,子类为Student类,两种接口分别为Move和Study两种,用来描述上学方式和学习范围。③取得参数的类型: public Class

weixin_44883789的博客 1543

OpenClaw插件开发指南:扩展AI智能体的无限可能

OpenClaw插件开发指南介绍了如何扩展AI智能体的功能。该插件系统支持多种类型(功能、集成、工具、界面、工作流插件),具有模块化、低耦合等优势。开发环境需要安装SDK和工具包,通过plugin.json配置插件信息,主文件实现核心功能。API提供智能体管理、任务执行等接口,示例演示了文本处理插件的创建流程。开发者可基于此框架灵活扩展OpenClaw的能力。

一键难忘的博客 561

反射调用方法

JAVA反射调用方法

c103363的博客 2049

Python实战:打造学生信息管理系统

通过本教程,我们构建了一个简单的学生信息管理系统,实现了基本的添加、删除、修改和查询功能。当然,这个系统还有很多可以改进和扩展的地方,比如添加用户界面、增加数据持久化功能、支持批量操作等。简介:本文将介绍如何使用Python编写一个功能齐全的学生信息管理系统,包括添加、删除、修改和查询学生信息的基本操作。学生信息管理系统是学校日常管理中不可或缺的一部分,它能够帮助管理人员快速、准确地管理学生信息,提高工作效率。为了实现上述功能,我们可以设计一个包含学生信息的字典,并使用函数来封装各个操作。

铭渊老黄 1489

【数据分析】基于多组学数据整合的微生物与宿主互作网络构建及可视化分析

综上所述,本教程通过详细的步骤和方法,展示了如何整合微生物群落数据、宿主基因表达数据和代谢组数据,构建微生物与宿主互作网络,并进行可视化分析。这种方法为研究微生物与宿主之间的复杂关系提供了一种有力的工具,有助于推动相关疾病的研究和治疗。然而,在实际应用中,需要注意数据处理和分析过程中的各种问题,并结合实验验证来提高研究结果的可靠性和科学性。未来,随着多组学技术的不断发展和完善,以及数据分析方法的创新,相信我们能够更深入地理解微生物与宿主之间的互作机制,为疾病的预防、诊断和治疗提供更有力的支持。

专注生信领域 370

反射——调用方法

我们已经能通过Class实例获取所有Field对象,同样的,可以通过Class实例获取所有Method信息。Class类提供了以下几个方法来获取Method: Method getMethod(name, Class…):获取某个public的Method(包括父类) Method getDeclaredMethod(name, Class…):获取当前类的某个Method(不包括父类) Method[] getMethods():获取所有public的Method(包括父类) Method[] getD

weixin_46722612的博客 3031

YOLOv8【第七章:损失函数篇·第1节】一文搞定,IoU系列损失函数!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 1196

java反射获取实现类_Java介绍通过反射获取类的信息

免费学习推荐:java基础教程目录1.获取Field2.反编译Field3.通过反射机制访问对象属性4.可变长度参数5.反射Method(了解)6.反编译(了解)7.反射机制调用方法8.反射Constructor9.反射机制调用构造方法10.获取父类和父接口在前面一节我们介绍了反射机制的详细内容反射机制,本节我们将介绍通过反射获取类的属性、方法等信息。1.获取Fieldpublic class R...

weixin_36260323的博客 1115

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

反射机制概述

1、反射机制概述 1.1、反射机制有什么用? ​ 通过Java语言中的反射机制可以操作字节码文件(class文件)。 1.2、反射机制相关的类在哪个包下? ​ 反射机制在java.lang.reflect.*包下。 1.3、反射机制相关的重要的类有哪些? ​ java.lang.class:代表整个字节码,代表一个类型。 ​ java.lang.reflect.Method:代表字节码中的方法字节码。 ​ java.lang.reflect.Constructor:代表字节码中的构造方法字节码。 ​ jav

wcs_csdn的博客 250

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java反射机制获取父类属性

首先查看反射机制如何获取类的方法的: Class clazz = object.getClasss(); clazz.getDeclareFields(); Calzz.getFields(); 通过getClass()方法来获取类的定义信息,通过定义信息再调用getFields()方法来获取类的所有公共属性,或者调用getDeclaredFields()方法来获取类的所有属性,包括公共,...

勇敢牛牛 3万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java连载120-反射机制获取构造方法和父类、父接口

一、使用反射机制来 (1)获取一个类; (2)获取类的构造函数 (3)通过构造函数来获取一个对象 package com.bjpowernode.java_learning; import java.lang.reflect.*; public class D120_1_ConstructerOfClass { public static void main(String[] args) throws Exception{ //1.获取类 Class c = Class.forName

weixin_44630050的博客 298

Java新手入门:反射机制详解——从获取类信息到动态调用方法

反射机制是Java中的一个强大又有点“神奇”的特性。这个机制允许我们在运行时获取类的各种信息,并且能动态地调用类的方法。听起来很神奇吧?别急,接下来我会尽量用通俗易懂的语言,结合案例和使用场景,带大家一步步走进反射的世界。好了,今天关于Java反射机制的分享就到这里了。希望大家通过这篇文章,能够对反射机制有一个初步的了解,并能够在实际开发中灵活运用。当然,反射机制还有很多深入的内容等待大家去探索和学习。如果你对这方面感兴趣,不妨多查阅一些相关资料,相信通过不断的学习和实践,你一定能够掌握这个强大的工具!

Jz_Stu的博客 2097

java反射机制获取对象中父类属性对象

今天有个朋友问,继承会继承父类的私有属性和私有方法吗。回答当然是可以的,只是不能直接访问(例如对于父类的私有属性,可以借助从父类中继承的get方法来获得该值)。 当时也想到可以通过反射的方式来获取父类中私有属性的值。一开始使用getDeclaredFileds(),但发现只能获取子类的相关的属性对象。具体代码如下: 通过 getDeclaredFileds()方法获取属性对象 父类: public...

厄多斯L的博客 2816

利用java反射机制获取类的所有属性和方法

在运行状态中,对任意一个类都有获取这个类的所有属和方法,对于任意一个对象,都能调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为java语言的反射机制。 下面给大家列出,如何用反射机制获取调用类。 首先,先创建一个包reflex,在包里添加一个类进行获取: package reflex; public class ReflexDemo { ...

白夜光的博客 1万+

JAVA中通过反射机制获取父类和接口

JAVA中通过反射机制获取父类和接口 获取父类:.getSuperclass() 获取接口:.getInterfaces() public class SuperTest01 { public static void main(String[] args) throws Exception{ Class c = Class.forName("java.lang.String"); //获取父类 Class superName = c.getSupe

qq_42843172的博客 807

Java反射机制demo —获取一个类的父类和实现的接口

1,Java反射机制得到一个类的父类 使用Class类中的getSuperClass()方法能够得到一个类的父类 如果此 Class 表示 Object 类、一个接口、一个基本类型或 void,则返回 null。如果此对象表示一个数组类,则返回表示该 Object 类的 Class 对象。 测试代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 package com.aar...

qq892628217的博客 1594

java 子类如何通过反射调用父类私有方法

通过反射调用父类私有方法的Java方案 在Java中,子类通常不能直接调用父类的私有方法。但是,通过反射机制,我们可以间接地实现这一功能。本文将介绍如何使用Java反射机制来调用父类的私有方法,并提供一个具体的示例。 反射机制简介 反射是Java中一种强大的机制,它允许程序在运行时查询、访问和修改类、接口、方法和字段等信息...

weixin_35130354的博客 402

获取某个特定的方法,通过反射机制执行 反编译某个类的所有的构造方法

public class reflect08 { public static void main(String[] args) throws Exception { //以前 //CustomerService cs = new CustomerService(); //cs.logout(); //通过反射机制 Class c = Class.forName(...

一李 868

利用Java反射机制无法获取类的父类属性

Java 反射无法获取父类的属性是由于 Java 的继承机制所决定的。当一个类继承自父类时,子类并不会直接继承父类的私有属性,而是通过父类的构造器来初始化这些属性。因此,通过反射只能获取到当前类声明的属性,而无法获取到父类的属性。虽然无法直接通过反射获取父类的私有属性,但是我们可以通过一些技巧来间接获取到这些属性。方法获取父类的 Class 对象,然后再通过该 Class 对象获取父类的属性。通过以上代码,我们可以成功获取到父类。当我们运行上面的代码时,只会输出。现在我们尝试使用反射获取。

超勇的阿杰的博客 867

Java反射机制,获取对象的属性和值(包括所有父类)

简单demo public class Entity1 extends Entity2 { private String name1 ; } public class Entity2 extends Entity3{ private BigDecimal bigDecimal2; } public class Entity3 { private Integer ag...

_夜渐凉 3759
上一篇: Java反射机制——通过反射机制实例化对象(详解)
下一篇: Java注解——@Override注解(详解1)
-今非昔比°
博客等级 码龄5年 213粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-今非昔比°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值