获取类实现接口中泛型的实际类型,和继承类中泛型的实际类型(java)
如果一个类实现了一个接口,如何获取接口中泛型的实际类型
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
class Head{
}
interface Animal<T>{
}
class Dog implements Animal<Head>{
}
public class Test {
public static void main(String[] args){
Animal animal=new Dog();
Type genericInterface = animal.getClass().getGenericInterfaces()[0];
ParameterizedType genericInterface1 = (ParameterizedType) genericInterface;
Class cname=(Class)genericInterface1.getActualTypeArguments()[0];
System.out.println(cname);
// 打印 class com.weblogc.design.test.Head
}
}
获取class Dog implements Animal<Head>
Head的实际类型
如果一个类继承了另一个类,如何获取继承类中泛型的实际类型
import java.lang.reflect.ParameterizedType;
class Money{
}
class Person<T>{
}
class Man extends Person<Money>{
}
public class Test2 {
public static void main(String[] args){
Person man=new Man();
ParameterizedType parameterizedType=(ParameterizedType)man.getClass().getGenericSuperclass();
Class actualTypeArgument = (Class)parameterizedType.getActualTypeArguments()[0];
System.out.println(actualTypeArgument);
// 打印 class com.weblogc.design.test.Money
}
}
获取class Man extends Person<Money>
Money的实际类型
搞明白这两个知识点 对一些框架设计,以及架构很有帮助。
评论区
请写下您的评论...
猜你喜欢
ofc
c#中的数据类型
weblog
3249
c#中的数据类型
c#中的数据类型分为值类型和引用类型
值类型有包括(结构体类型,枚举类型)
引用类型又包括(类类型,数组类型,接口类型,委托类型)
c#数据类型的派生谱系
值类型
blog
java泛型知识点总结
java基础
3274
泛型1.什么是泛型Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数
blog
java数据类型
java基础
4467
(class)接口(interface)数组byte: byte数据类型是8位、有符号的,以二进制补码表示的整数; 最小值是-128(-2^7); 最大值是127(2^7-1); 默认值是0; byt
blog
asm类型描述符和方法描述符
java虚拟机(jvm)
5995
1.内部名在许多情况下,一种类型只能是类或接口类型。例如,一个类的超类、由一个类实现的接口,或者由一个方法抛出的异常就不能是基元类型或数组类型,必须是类或接口类型。这些类型在已编译类中用内部名字表示
ofc
mysql整数类型的范围
weblog
1238
mysql整数类型的范围MySQL支持多种数据类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。其中,整数类型包括:TINYINT、SMALLINT、MEDIUMINT、INT和
weblog
5361
栗子usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication3{classProgram{staticvoidMain(string[]args){Stones=newStone(1000)
java基础
2717
为什么要问这个问题,⾸先在Java中定义的⼋种基本数据类型中,除了其它七种类型都有明确的内存占⽤字节数外,就boolean类型没有给出具体的占⽤字节数,因为对虚拟机来说根本就不存在boolean
official
1176
列上面。Worker会从队列中获取未被读取的数据处理。交换机有4种不同的交换机类型:直连交换机:Directexchange扇形交换机:Fanoutexchange主题交换机:Topicexchange
最新发表
归档
2018-11
12
2018-12
33
2019-01
28
2019-02
28
2019-03
32
2019-04
27
2019-05
33
2019-06
6
2019-07
12
2019-08
12
2019-09
21
2019-10
8
2019-11
15
2019-12
25
2020-01
9
2020-02
5
2020-03
16
2020-04
4
2020-06
1
2020-07
7
2020-08
13
2020-09
9
2020-10
5
2020-12
3
2021-01
1
2021-02
5
2021-03
7
2021-04
4
2021-05
4
2021-06
1
2021-07
7
2021-08
2
2021-09
8
2021-10
9
2021-11
16
2021-12
14
2022-01
7
2022-05
1
2022-08
3
2022-09
2
2022-10
2
2022-12
5
2023-01
3
2023-02
1
2023-03
4
2023-04
2
2023-06
3
2023-07
4
2023-08
1
2023-10
1
2024-02
1
2024-03
1
2024-04
1
2024-08
1
标签
算法基础
linux
前端
c++
数据结构
框架
数据库
计算机基础
储备知识
java基础
ASM
其他
深入理解java虚拟机
nginx
git
消息中间件
搜索
maven
redis
docker
dubbo
vue
导入导出
软件使用
idea插件
协议
无聊的知识
jenkins
springboot
mqtt协议
keepalived
minio
mysql
ensp
网络基础
xxl-job
rabbitmq
haproxy
srs
音视频
webrtc
javascript
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。