JAVA泛型强制类型转换问题

[复制链接]
查看11 | 回复3 | 2021-1-27 05:04:52 | 显示全部楼层 |阅读模式
Listlist2=this.dbHelper.SqlQuery(hql2);//dbHelper是一个数据库操作类。
Borrowp_Detail=(Borrowp_Detail)list2.get(0);//Borrowp_Detail是一个javabean,里面定义了一些数据库字段,全是get,set方法
请问以上代码中泛型的list2中是如何填充到Borrowp_Detail的javabean中的呢?原理是怎样的,没有看明白list2怎么通过强制类型转换就自动填充进去了。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:04:52 | 显示全部楼层
list2.get(0)返回的就是Boorow_Detail类的对象(或子类对象)的引用
就和以下的意思一样
Objecto=newString(“test”);
Strings=(String)o;
o虽然是Object类型,但引用的是String对象,所以能强制转换为s
同理,list2.get(0)引用的是Boorow_Detail类的对象(或子类对象),所以能强制转换为Boorow_Detail

回复

使用道具 举报

千问 | 2021-1-27 05:04:52 | 显示全部楼层
楼上基本说的很明白了,List的泛型就是不确定的意思,所以在没有泛型强制规范的时候,代码直观感受,就是可以转为Borrowp_Detail,具体对不对,那只能代码运行起来才知道了。如果上面规范了泛型List[B]list2=this.dbHelper.SqlQuery(hql2);如果Borrowp_Detail没有继承Borrowp或实现Borrowp接口那编译阶段就报错了。
我主要是想来吐槽这个命名规范的。实在看不下去Borrowp_Detail。到也没有什么错。但是实在是规范。不是好习惯。
回复

使用道具 举报

千问 | 2021-1-27 05:04:52 | 显示全部楼层
楼上基本说的很明白了,List的泛型就是不确定的意思,所以在没有泛型强制规范的时候,代码直观感受,就是可以转为Borrowp_Detail,具体对不对,那只能代码运行起来才知道了。如果上面规范了泛型List[B]list2=this.dbHelper.SqlQuery(hql2);如果Borrowp_Detail没有继承Borrowp或实现Borrowp接口那编译阶段就报错了。
我主要是想来吐槽这个命名规范的。实在看不下去Borrowp_Detail。到也没有什么错。但是实在是不规范。不是好习惯。不提倡、不鼓励。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行