当前位置: 首页 > 面试题库 >

解释集合的语法。emptyList()

陆正奇
2023-03-14
问题内容

我只是研究了通用编程,List<E>接口和ArrayList,所以我可以理解下面的语句。

ArrayList<String> list = new ArrayList<String>();

但是我不理解在浏览网络时看到的下一条语句。

List<String> list2 = Collections.<String>emptyList();
  1. 什么Collections啊 为什么不是Collections<E>还是Collections<String>
  2. 为什么<String>将方法名称放在前面emptyList

emptyList<String>()对于Generic来说不正确吗?)

  1. 该声明是什么意思?

问题答案:

该行通过使用泛型类型参数调用静态方法来创建一个空字符串列表。

Collections类内部,有一个静态方法emptyList声明为:

public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

这具有通用类型参数T。我们使用以下方法调用此方法:

List<String> list = Collections.emptyList();

并被T推断为是String由于的类型list

我们也可以T在调用时将其放在尖括号中来指定其类型emptyList。如果我们想要比推断的类型更具体的类型,则可能需要这样做:

List<? extends Object> list = Collections.<String>emptyList();

emptyList<String>()是不正确的,因为该放置仅在创建泛型类的实例而不是调用方法时才有效。当使用new两个可能的类型参数时,类名之前的仅用于构造函数,而类名之后的则用于整个实例,因此对于类:

class MyClass<A> {
    public <B> MyClass(A a, B b) {
        System.out.println(a + ", " + b);
    }
}

我们可以调用它的构造,其中AStringBInteger这样的:

MyClass<String> a = new <Integer>MyClass<String>("a", 3);

或使用类型推断:

MyClass<String> a = new MyClass<>("a", 3);

也可以看看:

  • 通用方法
  • 类型推断


 类似资料:
  • 问题内容: 我已经阅读了Beam文档,也阅读了Python文档,但是没有找到关于大多数示例Apache Beam代码中使用的语法的很好的解释。 谁能解释什么,以及在下面的代码在做什么?引号中的文本(即“ ReadTrainingData”)是否有意义,或者是否可以与其他任何标签互换?换句话说,该标签如何使用? 问题答案: Python中的运算符可以重载。在Beam中,是的同义词,将a应用于a以产生

  • 我不知道语法是什么意思。感谢任何帮助。 谢谢你。

  • 我已经通读了Beam文档,也通读了Python文档,但没有找到关于大多数示例Apache Beam代码中使用的语法的好解释。

  • 翻译的结果是什么?它会把高级语言变成汇编语言还是机器语言,即二进制代码? 如果是后者,这是否意味着解释语言与介绍集没有关系? 一种语言只能有一个口译员?是因为解释器不做任何优化,所以我们不需要找到更好的解释器吗?

  • 问题内容: 我了解像Hashtable这样的集合是同步的,但是有人可以向我解释它是 如何 工作的,在什么时候访问仅限于并​​发调用?例如,假设我使用了一些像这样的迭代器: 有人可以解释一下从不同线程中随机调用这些函数是否有陷阱吗?特别是,迭代器如何进行同步,尤其是在使用entrySet()时,似乎也需要同步?如果在循环之一进行时调用clear()会发生什么?如果removesomething()删

  • 运行在任何现代计算机上的软件都以多种编程语言写成。其中有物理语言,例如用于特定计算机的机器语言。这些语言涉及到基于独立储存位和原始机器指令的数据表示和控制。机器语言的程序员涉及到使用提供的硬件,为资源有限的计算构建系统和功能的高效实现。高阶语言构建在机器语言之上,隐藏了表示为位集的数据,以及表示为原始指令序列的程序的细节。这些语言拥有例如过程定义的组合和抽象的手段,它们适用于组织大规模的软件系统。