首页 > 试题广场 >

请你说说泛型、泛型擦除

[问答题]
Java是伪泛型,我们在代码中写好的泛型,在编译时还会去掉,这就是泛型擦除
发表于 2022-04-30 18:00:44 回复(0)
1.泛型:Java在jdk1.5引入了泛型,在没有泛型之前,每次从集合中读取的对象都必须进行类型转换,如果在插入对象时,类型出错,那么在运行时转换处理的阶段就出错;在提出泛型之后就可以明确的指定集合接受哪些对象类型,编译器就能知晓并且自动为插入的代码进行泛化,在编译阶段告知是否插入类型错误的对象,程序会变得更加安全清晰。 2.泛型擦除:Java泛型是伪泛型,因为Java代码在编译阶段,所有的泛型信息会被擦除,Java的泛型基本上都是在编辑器这个层次上实现的,在生成的字节码文件中是不包含泛型信息的,使用泛型的时候加上的类型,在编译阶段会被擦除掉,这个过程称为泛型擦除。
发表于 2022-06-26 10:39:53 回复(1)
泛型的本质:参数化类型,即给类型指定一个参数。泛型:泛型接口,泛型类,泛型方法。泛型的好处:1.可以在编译时检查类型安全。2.所有的强制转换都是自动和隐式的,可以提高代码的重用率。泛型擦除:编译器在编译期间将我们写好的泛型进行擦除,并相应的做出一些类型转换。
发表于 2022-06-16 16:26:48 回复(0)
Java在1.5之后引入了泛型,防止在编译时产生类型转换错误,编译时就能及时发现,而不是运行。程序在编译时会将泛型去掉,这就是泛型擦除。
发表于 2022-08-13 22:02:33 回复(0)
arrayList<Integer>泛型不可以向上转化为arrayList<number>,因为arrayList<number>接收arrayList<float>,但arrayList< Integer>不可以接收arrayList< float>,不能转回来
编辑于 2022-06-21 18:24:43 回复(0)
1.泛型:Java在jdk1.5引入了泛型,在没有泛型之前,每次从集合中读取的对象都必须进行类型转换,如果在插入对象时,类型出错,那么在运行时转换处理的阶段就出错;在提出泛型之后就可以明确的指定集合接受哪些对象类型,编译器就能知晓并且自动为插入的代码进行泛化,在编译阶段告知是否插入类型错误的对象,程序会变得更加安全清晰。 2.泛型擦除:Java泛型是伪泛型,因为Java代码在编译阶段,所有的泛型信息会被擦除,Java的泛型基本上都是在编辑器这个层次上实现的,在生成的字节码文件中是不包含泛型信息的,使用泛型的时候加上的类型,在编译阶段会被擦除掉,这个过程称为泛型擦除。
发表于 2022-11-15 12:56:38 回复(0)
1)泛型:Java在jdk5引入了泛型,在没有泛型之前,每次从集合中读取的对象都必须进行类型转换,如果在插入对象时,类型出错,那么在运行时转换处理的阶段就会报错。在提出泛型之后就可以明确的指定集合接受哪些对象类型,编译器就能知晓并且自动为插入的代码进行泛化,在编译阶段告知是否插入类型错误的对象,程序会变得更加安全清晰。 2)泛型擦除:Java泛型是伪泛型,因为Java代码在编译阶段,所有的泛型信息会被擦除,Java的泛型基本上都是在编辑器这个层次上实现的,在生成的字节码文件中是不包含泛型信息的,使用泛型的时候加上的类型,在编译阶段会被擦除掉,这个过程称为泛型擦除。
发表于 2022-07-19 20:23:57 回复(0)
java的泛型是伪泛型,这是因为java在编译期间,所有的泛型类型都会被擦掉,这就是泛型擦除
发表于 2022-06-27 08:47:23 回复(0)
答: 泛型是Java的一个重要特性,允许我们在定义类、接口和方法时使用类型参数,从而使得这些代码可以在不同的数据类型上进行通用操作,泛型的主要作用是提高代码的重用性、类型安全性和可读性。 泛型擦除是指Java编译泛型代码时,会将泛型类进行信息擦除,并在运行时使用原始类型代替。避免运行时额外的类型检查和类型转换。
发表于 2024-03-27 20:58:56 回复(0)
泛型是Java中的一个重要特性,它允许我们编写可以处理多种类型的代码,而不需要为每种类型都编写一个单独的类。泛型的核心思想是参数化类型,即将类型作为参数传递给类或方法。这样可以在编译时检查类型的正确性,从而避免在运行时出现类型转换异常泛型擦除是Java泛型实现中的一种技术,它的核心思想是在编译时将泛型类型擦除为原始类型,从而使得泛型类型在运行时不再存在。这样做的好处是可以在不影响现有代码的情况下引入泛型特性,但也带来了一些限制,比如无法在运行时获取泛型类型的信息在Java中,泛型擦除的具体实现方式是通过类型擦除来实现的。具体来说,编译器会将泛型类型中的类型参数替换为它们的边界或Object类型,并在需要时插入类型转换代码。这样做可以保证泛型类型在运行时的行为与原始类型一致,但也带来了一些限制,比如无法在运行时获取泛型类型的信息总之,泛型是Java中的一个重要特性,它可以让我们编写更加通用和安全的代码。而泛型擦除则是Java泛型实现中的一种技术,它可以在不影响现有代码的情况下引入泛型特性,但也带来了一些限制。
发表于 2023-03-26 16:39:06 回复(0)
泛型是java中用来保证编译期安全的一种检测机制,本质上是将类型参数化。类型擦除发生在编译阶段,此时泛型会被转为具体的类型,在jvm中并不会记录集合的类型。
发表于 2023-03-10 13:43:03 回复(0)
1.泛型的本质:参数化类型,即给类型指定一个参数。
泛型的好处:
1.可以在编译时检查类型安全。
2.所有的强制转换都是自动和隐式的,可以提高代码的重用率。
泛型擦除:Java泛型是伪泛型,因为Java代码在编译阶段,所有的泛型信息会被擦除,Java的泛型基本上都是在编辑器这个层次上实现的,在生成的字节码文件中是不包含泛型信息的,使用泛型的时候加上的类型,在编译阶段会被擦除掉,这个过程称为泛型擦除。
发表于 2023-02-08 11:59:42 回复(0)
Java在jdk1.5后引入了泛型,在没有泛型之前,每次从集合读取对象都需要进行类型转换,如果在插入对象时,类型出错,那么在运行时转换处理阶段就会报错。在提出泛型之后就可以指定集合所接受的对象类型,编译器就能知晓并自动的为代码进行泛型擦出,在编译阶段就会告知是否插入错误类型的对像。泛型擦出:Java的泛型是伪泛型,在字节码里将泛型擦除,字节码里是没有泛型的
发表于 2022-09-22 19:55:02 回复(0)
泛型的本质是参数化类型,即给类型指定一个参数,泛型:泛型接口,泛型类,泛型方法,泛型的好处:1编译时会检查类型安全 2所有的强制转换都是自动的和隐式的,提高了代码复用 泛型擦除:我们在代码中写好的泛型,在编译时会被去掉
发表于 2024-05-13 08:57:04 回复(0)
泛型提高了代码的复用性,能够使编写代码的是否不具体指定需要的类型。然而由于java万物皆对象,所有类对象都是Object的子类,所以在编译时会进行泛型擦除,将泛型替换为Object
发表于 2024-05-12 15:23:25 回复(0)
泛型是用于解决代码通用性的问题的,在java中编写泛型类只需要在类后加上一个尖括号包括的类参数即可,后续使用时需要提前指定好类参数才可以创建对象,否则会默认创建类参数的上限类,比如Object。在没有泛型之前,类的通用性只能通过Object这种顶级的类作为数据的接收,不方便代码的维护,在多程序员下编写的代码可能存在对象类型存错的情况,后续就会报无法转换类的错误。java在jdk1.5后引入的泛型就是为了解决这个问题并提高代码的维护性。但java为了兼容老版本的jdk,所以对泛型还打上了一个泛型擦除的标签,这个泛型擦除会在编译后擦除,他会将你填写的类参数擦去,并改用上限类作为对象接收,这就导致了我们所创建的一个类下的多个不同类参数的类只有一个.class字节码文件,比如List<integer>和List<string>均是List<object>的字节码所创建的对象。这可以减少字节码文件所占用的内存,但导致程序员无法创建一些泛型类的数组等。此外,泛型擦除后还引发了一系列的问题,例如桥接就是解决了泛型类继承后重写方法的漏洞 </object></string></integer>
发表于 2024-04-29 23:40:36 回复(0)
1 泛型:即在使用集合的时候预先声明集合内元素的类型,使得在取出元素时不会发生类型错误; 2 泛型擦除: java泛型是伪泛型,只在编译前有泛型信息,编译后的字节码没有泛型信息;
发表于 2024-04-26 13:59:25 回复(0)
java的泛型是伪泛型,这是因为java在编译期间,所有的泛型类型都会被擦掉,这就是泛型擦除
发表于 2024-04-16 11:00:43 回复(0)
Java中的泛型可以帮助我们指定类型,避免了类型转化出现的错误,这样的话在我们编写代码的过程中就能知道我们程序之间的错误,而在编译以后会对泛型内容进行擦除,转化为所需要的类型
编辑于 2024-04-01 16:45:40 回复(0)
泛型就是一种机制,可以让编译器自动为你的插入进行转化为对应的类型。ArrayList<>arr;
发表于 2024-03-21 09:29:07 回复(1)