java反射泛型的作用_Java反射,泛型在Json中的运用

最近项目中遇到了Json数据自动获取的功能,不然令人想起java的反射,已经很长时间没复习java了正好一块连java的这一块内容一起过一遍。java中的反射无疑就相当于java开发者的春天,在众多的框架中也能看到它的身影,可以在运行时检查类,接口、变量和方法等信息,可以实例化调用方法以及设置变量值等。本文主要以代码的形式直接将反射,泛型的运用展现出来。

java中的反射

首先新建一个基础类Author。

3f9a81ae3b06fc7212b3d17d09fb1a67.png

然后新建一个反射类,运用反射方法对上面的类进行访问.包括对私有方法的访问,对私有属性的访问等。其中常用的一些方法以及解释:

2eba63de63a49e19bae7c21823985466.png

b903cc0f6ac4fa2ef610d3bdcf4c77e3.png

0c0e3e2b477955c539004fa8419f1d03.png

6b21b14a5930db87789d47bccb2a278d.png

通过控制台打印以上信息:查看运用结果

ReflectClass.reflectNewInstance();ReflectClass.reflectPrivateField();ReflectClass.reflectPrivateConstructor();ReflectClass.reflectMethod();

运行结果:

1622ea2d087dea79616366b605aaaa41.png

泛型的运用

对于泛型其实很好理解,通俗点讲就是我们将类型也当成了参数进行传值,这样做代码的安全性很大的被提升了,也为较大的优化带来可能。泛型可以使编译器知道一个对象的限定类型是什么,这样编译器就可以在一个高的程度上验证这个类型消除了强制类型转换 使得代码可读性好,减少了很多出错的机会。但是也要记住泛型的规范,比如静态的变量和方法不能引用泛型变量,我们也不能利用instanceof等方法对泛型的类型进行判断,当然这样做也毫无意义,重要的一点是泛型类不能继承Exception或者Throwable。泛型的继承中,不论子类是否为泛型类,所继承和实现的父类接口都有被指定。

常用的泛型类型变量:

E:元素(Element)

K:关键字(Key)

N:数字(Number)

T:类型(Type)

V:值(Value)

另外泛型界定的概念主要是指对泛型类型进行一个限定。比如:

public static T add(T str1, T str2) { return "";}

利用泛型和反射实现对json数据的保存

b9b29c4e53c2898c58183a2bab07b545.png

我们想把以上的实现封装起来,这时就用了泛型。

b22374236992af729047ce7d9079540b.png

调用实现:

public static void main(String[] args) {// TODO Auto-generated method stubString json = "{\"name\":\"李先生\",\"age\":82}";//ReflectJson.getJson();//解析json然后换成实体类Author author=getJsonClass(json, Author.class);System.out.print( author.toString());}

运行结果:

425f71aedf2e9c63ff6c293dd490403a.png

0b366d791273559a8b4a94743b23b589.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值