本文介绍: 如果使用泛型,List的E中 给他传什么类型,他就返回什么类型,可以获得对应类的属性。其实 A-Z都可以作为泛型标记符,上面只是一种约定,增强代码的可读性,方便团队间的合作开发。如果使用Object,那么返回类型也是Object类,不能获得想要类的属性。编译时自动检查类型安全,避免隐性的类型转换异常。如果这里使用Object,那么将没有办法获取query属性。不需要做强制类型转换。
什么时候使用
- 泛型:只要确定了用哪类对象,并且用到这个对象里的方法。选择泛型,泛型更加精确,只要用到Object的地方基本都能用泛型代替。
- Object类:Object是所有类的父类,更加笼统,且只能使用固定的属性。
例:将 List<Object> aa 转化 List<QueryBO> bb。
@Data
public class QueryBO {
private Boolean query1;
private Boolean query2;
private Boolean query3;
}
解答
public static void main(String[] args) {
List<Object> aa=new ArrayList<>();
QueryBO queryBO=new QueryBO();
queryBO.setQuery1(true);
aa.add(queryBO);
List<QueryBO> bb=new ArrayList<>();
//将aa强制转化为bb
for (Object o:aa) {
QueryBO item=(QueryBO) o;
bb.add(item);
}
System.out.println(bb); //输出:[QueryBO(query1=true, query2=null, query3=null)]
}
如果使用Object,那么返回类型也是Object类,不能获得想要类的属性。
如果使用泛型,List<E>的E中 给他传什么类型,他就返回什么类型,可以获得对应类的属性。
解题:
public class TestQueryBO<T extends QueryBO> {
public Boolean test(T t){
if(t.getQuery1().equals(true) && t.getQuery2().equals(true) && t.getQuery3().equals(true)){
return true;
}
return false;
}
}
public class TestQueryBO1 <Object>{
public static void main(String[] args) {
//事先声明了QuBO1 extends QueryBO
QuBO1 quBO1=new QuBO1();
TestQueryBO<QuBO1> testQueryBO=new TestQueryBO<>();
testQueryBO.test(quBO1);
}
}
泛型标记符
其实 A-Z都可以作为泛型标记符,上面只是一种约定,增强代码的可读性,方便团队间的合作开发。
泛型的好处
原文地址:https://blog.csdn.net/m0_61982496/article/details/134726360
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_25626.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。