反射调用普通方法|学习笔记

简介: 快速学习反射调用普通方法

开发者学堂课程【Java 高级编程反射调用普通方法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/20/detail/382


反射调用普通方法


内容简介:


一、获取全部方法

二、自定义方法信息展示

三、在不导入指定类开发包的情况下实现属性的配置

 

一、获取全部方法

在进行反射处理的时候,也可以通过反射来获取类之中的全部方法,但是需要提醒的是,如果要想通过反射调用这些方法,必须有一个前提条件类之中要提供有实例化对象。

 

在 class 类里面提供有如下的操作,可以获取方法对象:

1. 获取全部方法;

public Method[] getMethods()throws SecurityException

 

2. 获取指定方法;

public Method getMethod(String name,

Class<?>... parameterTypes)

throws NoSuchMethodException,SecurityException

3. 获取本类全部方法;

public Method[] getDeclaredMethods()

throws SecurityException

 

4. 获取本类指定方法;

public Method getDeclaredMethod(String name,

Class<?>.. parameterTypes)

Throws NoSuchMethodException,

SecurityException

 

范例:获取全部方法

package cn.mldn.demo;

import java.lang.reflect.Method;

import cn.mldn.vo.Person;

public class JavaAPIDemo {

public static void main(String[] args) throws Exception {

C1ass<?>cls = Person.class;//获限指定类的q1ass对象

//获取全部方法《包括父类中的方法)

Method methods []=cls.getMethods();

for (Method met : methods){

System.out.println(met);

//获取本类方法

Method methods [] = cls.getDeclaredMethods() ;l

for (Method met:methods)(

System.out.println(met);

注意加入分割线

 

二、自定义方法信息展示

在构造方法时难以发现两者的区别,于是举这个例子。但是需要注意的是,这个时候的方法信息的获取是依靠 method 类提供的 tostring() 方法完成的。

在很多时候,也可以由用户自己来拼凑方法信息的展凑形式。打开 system. 会把所有方法信息摆出来,但是这个信息不可能按照他默认的方法来展示,于是可以自定义方法信息显示。


范例:自定义方法信息西显

图片18.png

Met 中有一个方法叫 getname,在方法名称前,应该有返回值类型和修饰符;该修饰符是整型;参考 Modifier 类,Modifier 中常量都是整型,刚才输出的是对应的内容,但是如果想还原,能够看懂的是 public,可以通过方法 tostring 来实现。

修饰符完成之后,需要追加方法返回类型。拥有返回值类型后加上 getname 之后方法名称就需要加括号。括号还需要考虑 get parameterTypes 得到参数类型。

之后每个参数参与for循环,继续加入控制,执行代码后方法出现。信息反射完成,得到方法名称。

 

这种代码只需要清楚可以根据反射获取方法的结构即可,不需要做过多的深入理解,但是在 method 类里面有一个致命的重要方法

Public Ob ject invoke(ob ject  ob j, Ob ject...  args) throws

I11egal AccesException,I11egal ArgumentException,

InvocationTargeException

 

后续所有操作都是通过此方法展开的。Object 描述的是实力对象,这是反射调用类中的方法。

在 person 类里面,为 name 属性追加有 setter 与 getter 方法。

public class Person extends AbstractBase implements IMessageService,IChannelService {

private String name

private int age ;

public Person(){}

public Person(String name,int age) (

this.name = name ;

this.age = age;

public void setName(String name)(this.name ▪ name;

public String getName(){

return name;}

 

随后需要通过反射机制来实现 person 类之中的 setter 与 getter 方法的调用处理。

可以通过 class for name 识别化,通过此方法识别的优点就是不用导入。

 

三、在不导入指定类开发包的情况下实现属性的配置


范例:在不导入指定类开发包的情况下实现属性的配置

所以代码需要按照如下思考

1.任何情况下,如果要想保存类中的属性或者调用类中的方法,都必须保证存在有实例化对象,居然不允许导入包,那么就反射实例化。

 

2.如果要想进行方法的调用,那么一定要获取方法的名称。Attribute 是 string 类型,用于获取指定的方法。Setname 为方法名称。Invoke 要传递参数,接收实例化对象。

String setMethodName w "setName“//方法名

Method setMethod= cls-getDeclaredMethod(setMethodName,String-class); // 期所E的方法

setMethod.invoke(obj,value);

String getMethodName = "getName";

Method getMethod = cls.getDeclaredMethod(getMethodName);

System.out.print1n(getMethod.invoke(obj));

 

代码执行能够反射调用。

利用此类操作,整体的操作形式不会有任何的明确的类对象产生,一切都是依靠反射机制处理的,这样的处理避免了与一个类的耦合问题。这种方法在某一个复杂的类处理上较为方便。

相关文章
|
10月前
|
JSON API 开发者
闲鱼商品详情API接口(闲鱼API系列)
闲鱼商品详情API为开发者提供便捷、高效且合规的途径,获取闲鱼平台上特定商品的详细信息,如标题、价格、描述和图片等。该接口采用GET请求方式,需传入app_key、item_id、timestamp和sign等参数,返回JSON格式数据。示例代码展示了如何使用Python调用此API,包括生成签名和处理响应。开发者需替换实际的app_key、app_secret和商品ID,并关注官方文档以确保接口使用的准确性。
3315 1
|
网络协议 Ubuntu Linux
在Linux中, 如何配置网络接口?
在Linux中, 如何配置网络接口?
|
存储 缓存 固态存储
详解电子设备RAM和ROM
详解电子设备RAM和ROM
3686 0
|
应用服务中间件 Shell PHP
pbootcms模板报错提示PHP Warning: Unknown: open_basedir restriction
pbootcms模板报错提示PHP Warning: Unknown: open_basedir restriction
|
机器学习/深度学习 移动开发 资源调度
机器学习算法(二): 基于鸢尾花数据集的朴素贝叶斯(Naive Bayes)预测分类
机器学习算法(二): 基于鸢尾花数据集的朴素贝叶斯(Naive Bayes)预测分类
|
数据可视化 算法 JavaScript
使用Python进行网络数据可视化的多种方法与技巧
在当今信息爆炸的时代,网络数据量呈指数级增长,了解和分析这些数据对于许多领域的决策制定至关重要。可视化是理解和解释大量数据的强大工具之一,而Python作为一种流行的编程语言,提供了丰富的库和工具来进行网络数据可视化。本文将介绍一些使用Python进行网络数据可视化的方法与技巧,并提供相应的代码实例。
|
JavaScript 前端开发 程序员
【前端开发---Vue2】史上最详细的Vue入门教程(五) --- 细讲‘生命周期’
【前端开发---Vue2】史上最详细的Vue入门教程(五) --- 细讲‘生命周期’
【前端开发---Vue2】史上最详细的Vue入门教程(五) --- 细讲‘生命周期’
|
机器学习/深度学习 数据采集 数据可视化
基于数据挖掘与机器学习揭秘脱发主因
基于数据挖掘与机器学习揭秘脱发主因
360 0
|
SQL Web App开发 安全
网站安全检测:推荐8款免费的 Web 安全测试工具
  随着 Web 应用越来越广泛,Web 安全威胁日益凸显。黑客利用网站操作系统的漏洞和 Web 服务程序的 SQL 注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使得网站访问者受到侵害。
5574 0
|
存储 算法 OLAP
ChatGPT都推荐的向量数据库,不仅仅是向量索引
本文带大家一起了解阿里云 AnalyticDB 技术负责人姚奕玮在 QCon 全球软件开发大会(北京站)2023 上的精彩演讲,解密 AnalyticDB 全自研企业级向量数据库核心技术,以及新一代向量数据库在云原生存算分离和 AI 原生上的技术演进路线。