Tag: generics

原始类型,无界外卡和generics中使用Object之间的区别是什么

我正在阅读有效Java中关于generics的章节。 帮我理解Set , Set和Set之间的区别? 以下段落摘自本书。 作为快速回顾, Set是一个参数化类型,表示可以包含任何类型对象的Set , Set是一个通配符类型,表示一个只能包含某些未知类型的对象的Set ,而Set是一个原始类型type,选择退出generics类型系统。 什么是“某种未知类型”? 是所有未知类型的Object类型? 在这种情况下, Set和Set之间的具体区别是什么?

无界通配符类型List 和原始类型List之间有什么区别?

你能帮我理解无界通配符类型列表和原始类型列表之间的区别吗? List b; // unbounded wildcard type List a; // raw type 除此之外,任何人都可以帮助我理解什么是有界类型参数列表 ? List c;

如何在Java中从数组(int )创建ArrayList(ArrayList )

我看到了一个问题: 从数组中创建ArrayList 但是,当我使用以下代码尝试该解决方案时,它并不适用于所有情况: import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; public class ToArrayList { public static void main(String[] args) { // this works String[] elements = new String[] { “Ryan”, “Julie”, “Bob” }; List list = new ArrayList(Arrays.asList(elements)); System.out.println(list); // this works List intList = null; intList = Arrays.asList(3, 5); System.out.println(intList); int[] intArray = […]

怎么用而不是

所以我查看了一些Java代码并偶然发现: List l; 基本上这个列表接受某些SomeObject – SomeObject本身或其inheritance者的所有对象。 但根据多态性,它的inheritance者也可以像SomeObject一样,所以这也可以: List l; 那么,当第二个选项明确定义并且几乎相同时,为什么有人会使用第一个选项?

Javagenerics并将数字加在一起

我想在java中一般添加数字。 我遇到了困难,因为Numbers类并不真正支持我想做的事情。 到目前为止我尝试过的是: public class Summer { public E sumValue(List objectsToSum) { E total = (E) new Object(); for (E number : objectsToSum){ total += number; } return null; } 显然这不起作用。 我怎样才能纠正这段代码,这样我就可以得到一个或或者其他的列表并返回总和?

使用通配符创建新的通用对象

请解释这个通用代码通配符编译时错误: //no compile time error. List x = new ArrayList(); //compile time error. List x = new ArrayList();

未绑定通配符与原始类型之间的差异

我正在阅读关于generics的内容,我不明白是否需要未绑定的通配符以及它与原始类型的区别。 我读了这个问题,但仍然没有弄清楚。 在未绑定的通配符的Java教程页面中,我得到了以下两点,我没有理解第一点: 如果您正在编写可以使用Object类中提供的function实现的方法。 当代码使用generics类中不依赖于类型参数的方法时。 例如, List.size()或List.clear() 。 实际上,经常使用Class因为Class大多数方法都不依赖于T 有人可以用外行语言解释未绑定的通配符和原始类型之间的区别。 List与List有何不同?

返回Java通用方法的类型

我想知道为什么通过这种方式声明(或可以)声明返回voidgenerics方法: public static void printArray( E[] inputArray ) { // Display array elements for ( E element : inputArray ){ System.out.printf( “%s “, element ); } System.out.println(); } 似乎是返回对象的类型,但该方法实际上没有返回任何内容。 那么在这种情况下具体含义是什么?一般来说,通用方法是什么?

存储在java类文件中的generics类型在哪里?

我很清楚generics类型在编译时会从Java代码中删除。 1.5+ JVM使用什么信息(属性?)来实现getGenericType等?

通用通配符类型不应在返回参数中使用

是否可以说通用通配符类型不应该用在方法的返回参数中? 换句话说,声明一个如下所示的接口是有意义的: interface Foo { Collection next(); } 另外,可以说通用通配符类型仅在方法的参数声明中有意义吗?