当前位置:网站首页>Person.class.getInterfaces() 注意使用方法
Person.class.getInterfaces() 注意使用方法
2022-08-04 09:35:00 【魔道不误砍柴功】
Person.class.getInterfaces() 注意使用方法
如果此对象表示一个接口,则该数组包含表示该接口扩展的所有接口的对象。数组中接口对象顺序与此对象所表示的接口的声明的
extends子句中接口名顺序一致。如果此对象表示一个不实现任何接口的类或接口,则此方法返回一个长度为 0 的数组。
如果此对象表示一个基本类型或
void,则此方法返回一个长度为 0 的数组。
代码演示
package main.tcp.dubbo.test;
interface Person{
}
class Son implements Person{
}
public class TestDemo {
public static void main(String[] args) {
// 如果此对象表示一个不实现任何接口的类或接口,则此方法返回一个长度为 0 的数组。
System.out.println(Person.class.getInterfaces().length); // 输出结果是:0
System.out.println(Son.class.getInterfaces()[0]); // 输出结果是:interface main.tcp.dubbo.test.Person
ReflectInterface target = new ReflectInterfaceImpl();
System.out.println(target.getClass().getInterfaces()[0]);// 输出结果是:interface main.tcp.dubbo.test.ReflectInterface
System.out.println(new Class[]{
ReflectInterface.class}[0]);// 输出结果是:interface main.tcp.dubbo.test.ReflectInterface
System.out.println(ReflectInterface.class.getInterfaces().length); // 输出结果是:0
System.out.println(target.getClass());// 输出结果是:class main.tcp.dubbo.test.ReflectInterfaceImpl
System.out.println(ReflectInterface.class); // 输出结果是: interface main.tcp.dubbo.test.ReflectInterface
// 反射中第二个参数需要传入被代理类的接口数组,那么就有这几种写法了,如下:
// ReflectInterfaceImpl.class.getInterfaces()
// new Class<?>[]{ReflectInterface.class} // 推荐使用这种,灵活易用
// target.getClass().getInterfaces()
ReflectInterface service = (ReflectInterface)Proxy
.newProxyInstance(ReflectInterface.class.getClassLoader()
,new Class[]{
ReflectInterface.class}
,(obj, method, params) -> {
System.out.println("param="+ Arrays.asList(params));
String response = (String)method.invoke(target, params);
return response;
});
System.out.println(service.hello("我是入参"));
}
}
class ReflectInterfaceImpl implements ReflectInterface{
@Override
public String hello(String param) {
System.out.println("=================param="+param);
return "放屁";
}
}
运行结果:
0
interface main.tcp.dubbo.test.Person
interface main.tcp.dubbo.test.ReflectInterface
interface main.tcp.dubbo.test.ReflectInterface
0
class main.tcp.dubbo.test.ReflectInterfaceImpl
interface main.tcp.dubbo.test.ReflectInterface
param=[我是入参]
=================param=我是入参
放屁
Process finished with exit code 0
总结一句话,该类是否有父类接口,有的话就会有返回,否则数组长度为0,相当于没有元素返回。
边栏推荐
猜你喜欢

I am 37 this year, and I was rushed by a big factory to...

【云驻共创】HCSD 大咖直播–就业指南

双重for循环案例以及while循环和do while循环案例

telnet远程登录aaa模式详解【华为eNSP】

Anton Paar Anton Paar Density Meter Hydrometer Repair DMA35 Performance Parameters

Win11不识别蓝牙适配器的解决方法

TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2

开源一夏 | 查询分页不只有limit,这四种分页方法值得掌握

leetcode二叉树系列(一)
![Detailed explanation of MSTP protocol configuration on Layer 3 switches [Huawei eNSP experiment]](/img/97/6c3662ef36b02bc42eec95abaa6bc5.png)
Detailed explanation of MSTP protocol configuration on Layer 3 switches [Huawei eNSP experiment]
随机推荐
LeetCode中等题之设计循环队列
交换机链路聚合详解【华为eNSP】
ZbxTable 2.0 重磅发布!6大主要优化功能!
罗克韦尔AB PLC RSLogix5000中定时器指令使用方法介绍
Win11文件资源管理器找不到选项卡怎么办?
记录十条工作中便利的API小技巧
MindSpore:【AIR模型导出】导出时提示源码中select_op参数类型转换失败
NAT/NAPT地址转换(内外网通信)技术详解【华为eNSP】
Redis 内存满了怎么办?这样置才正确!
学习在php中分析switch与ifelse的执行效率
TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2
[Cloud Residency Co-Creation] HCSD Celebrity Live Streaming – Employment Guide
请问同一个oracle cdc表,如果flink job重新提交,是会全量读取一遍源数据还是增量呢?
MindSpore:mirrorpad算子速度过慢的问题
Could you please talk about how the website is accessed?[Interview questions in the web field]
Oracle怎么获取当前库或者同一台服务器上某几个库的数据总行数?
思想茶叶蛋 (Jul 31,2022)| 元宇宙(Metaverse)下了一枚什么样的蛋
leetcode经典例题——49.字母异位词分组
我和 TiDB 的故事 | 缘份在,那就终是能相遇的
MATLAB绘图总结