首页 > 其他分享 >泛型和Object的区别

泛型和Object的区别

时间:2023-07-24 11:33:08浏览次数:26  
标签:bb 区别 QueryBO Object List 泛型 true

什么时候使用

  • 泛型:只要确定了用哪类对象,并且用到这个对象里的方法。选择泛型,泛型更加精确,只要用到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中 给他传什么类型,他就返回什么类型,可以获得对应类的属性。

 

  • 以下例子应该使用泛型,首先他已经确定了是QueryBO的子类使用,且需要用到他的属性。

解题:

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;
    }
    
}

如果这里使用Object,那么将没有办法获取query属性

泛型标记符

  • E Element集合元素
  • T Type Java类
  • K Key 键v Value值
  • N Number 数值类型
  • ?表示不确定的Java类型

其实 A-Z都可以作为泛型标记符,上面只是一种约定,增强代码的可读性,方便团队间的合作开发。

泛型的好处

  1. 不需要做强制类型转换

  2. 编译时更安全。编译时自动检查类型安全,避免隐性的类型转换异常

标签:bb,区别,QueryBO,Object,List,泛型,true
From: https://www.cnblogs.com/nliu/p/17575267.html

相关文章

  • android textView gettag java.lang.String java.lang.Object.toString()
    AndroidTextView.getTag()方法详解在Android开发中,TextView是最常用的UI控件之一,用于显示文本内容。除了显示文本之外,TextView还提供了一些其他的方法,其中之一就是getTag()方法。本文将介绍这个方法的使用和作用。什么是getTag()方法getTag()方法是TextView类的一个方法,它用于......
  • 11.数组名和指针(这⾥为指向数组⾸元素的指针)区别
    1intmain()2{3inta[2]={1,2};4int*p=a;5cout<<"a+1"<<a+1<<endl;6cout<<"p+1"<<p+1<<endl;7cout<<"*(a+1)"<<*(a+1......
  • Array.from使用以及与[...obj]的区别
    一、Array.from使用通常Array都用于数组去重。下面是Array的详细用法:1.将类似组转化为真正的数组 函数参数转化为数组 dom转化为数组这里强调一下,必须有length属性,否则返回的是空数组。索引必须是字符串数字,否则返回的是[undefined,undefined,undefined,undefined]......
  • 二进制和文本文件的区别
    1.磁盘文件概述磁盘文件在物理上都是二进制存储从用户或者操作系统的角度(逻辑上),把文件分为文本文件和二进制文件1.1文本文件基于字符编码的文件(即不管是数值还是字符串,一个符号对应一个字节)。常见的编码有ASCII、UNICODE等。一般可以使用文本编辑器直接打开。1.2二进制......
  • c#里@和$的区别
    在C#中,字符串前加@表示强制不转译。如果字符串中有大量的\字符,而不是想用来进行转义,那就写@来取消\转义字符。还有就是字符串可以换行。字符串前加$的作用,类似于string.Format,可以进行占位符的编写,而不用字符串拼接,可以使字符串看起来更加简洁明了。......
  • anaconda是什么,是干嘛用的,与python的区别是什么?
    作者:python小达链接:https://www.zhihu.com/question/353409585/answer/1662315835来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。Anaconda是一个用于科学计算的Python发行版,Anaconda支持Linux,Mac,Windows系统,提供了包管理与环境管理的功能,可......
  • java 判断泛型T的类型
    Java判断泛型T的类型1.概述在Java中,泛型是一种强大的类型安全机制,它可以使我们写出更加灵活和可重用的代码。然而,在某些情况下,我们可能需要判断一个泛型T的具体类型。本文将向你介绍一种方法来判断泛型T的类型。2.实现流程下面是实现判断泛型T的类型的流程:步......
  • 10.define和const的区别
    define生效于编译预处理阶段,const生效于编译阶段define只是简单的字符串替换,在编译预处理阶段将所有用到宏的地方进行字符串替换,没有进行数据类型检查;const有数据类型,编译器要对其进行类型检查define不分配内存,而const在静态区分配内存,因此define没有地址,不可以使用指针指......
  • Python报错 | AttributeError: 'NoneType' object has no attribute 'group'
    报错信息使用Python正则匹配的时候,报如下错误:AttributeError:'NoneType'objecthasnoattribute'group'错误原因报错翻译过来是:属性错误:“NoneType”对象没有属性“group”没有匹配到符合正则表达式的内容,但又调用了group方法。importrestr='hellopython!!!hel......
  • ing和ed结尾的形容词如何区别
    1、修饰对象不同:  以后缀-ing结尾的形容词  如:interesting,exciting,frightening…  译为"令人…的".  主要用于修饰事物,表示事物的性质或特征  若用它们修饰人,则表示此人具有此种性质或特征。  例句:  It'smoreinteresting......