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

初始化没有对象类型的arraylist-JAVA

锺星洲
2023-03-14
问题内容

这个问题不是关于为什么我们将列表初始化为实现的接口,例如

List<myObject> obj = new ArrayList<myObject>();

问题是以下两个之间有何区别?为什么它们(显然)以相同的方式工作?

//list and arraylist both have a type
List<myObject> obj = new ArrayList<myObject>();

//arraylist does not have a type
List<myObject> obj = new ArrayList<>();

问题答案:

这两段代码是等效的,并ArrayList使用 类型 创建s (myObject在您的示例中):

List<myObject> obj = new ArrayList<myObject>();



List<myObject> obj = new ArrayList<>();

但是,第二个示例使用Java 7中引入的 菱形运算符<>)。它添加了类型推断,并减少了赋值的冗长性。

请参阅文档中的以下引用:

您可以用一组空的类型参数(<>)来替换调用通用类的构造函数所需的类型参数,只要编译器可以从上下文中推断出类型参数即可。这对尖括号被非正式地称为菱形。

例如,考虑以下变量声明:

Map<String, List<String>> myMap = new HashMap<String, List<String>>();

在Java SE 7中,可以用一组空的类型参数(<>)代替构造函数的参数化类型:

Map<String, List<String>> myMap = new HashMap<>();


 类似资料:
  • 初始化动画类型的对象时,会收到以下警告。 (警告添加为注释) 这是一张照片 以下是代码摘要: 这是我尝试编译后的日志猫 这里是我使用错误代码的地方 列表视图1。setOnItemClickListener(新的AdapterView.OnItemClickListener(){ 我找不到错误。 我创建了正确的文件夹和文件。在这里。 这是我得到我正在使用的动画代码的地方。 试图创建一个文件夹。收到这

  • 问题内容: 众所周知,arraylist是init。应该是这样的 那么,为什么Java允许这些? 那么,如果它们是正确的,为什么不允许这些? 编译器消息是:ArrayList类型的方法add(int,capture#1-of?extended Object)不适用于参数(int) 更一般 我读到了这件事,但很高兴收到您的来信。谢谢 另一个有趣的地方是: 问题答案: 您不能为类型的引用分配,因为它允

  • 为什么我可以初始化ArrayList,如下所示: 但在使用时出错:

  • 问题内容: 我对Swift类有疑问。我有一个UITableViewController类和UITableViewCell类的快捷文件。我的问题是UITableViewCell类和插座。此类存在错误 类别“ HomeCell”没有初始化程序 ,并且我不理解此问题。 感谢您的回复。 问题答案: 您必须使用隐式展开的可选变量,以便Swift可以在初始化阶段处理循环依赖关系(在这种情况下,UI组件的父级<

  • 问题内容: 我在用Java工作。 我通常会这样设置一些对象: 问题是:在此示例中是否等于,按原样我可以假定对未初始化的对象进行空检查将是准确的? 问题答案: 正确,未显式初始化的引用类型的静态成员和实例成员都由Java 设置为。相同的规则适用于数组成员。 根据Java语言规范的第4.12.5节: 变量的初始值 程序中的每个变量在使用值之前都必须具有一个值: 每个类变量,实例变量或数组组件在创建时均

  • 前面一节的 Fruit 类有两个实变量,分别表述水果的类型和状态.直到为这个类写了一个定制的inspect方法,我们方才了解它不会对一个缺乏属性的水果做出合理的解释.幸运的是,Ruby提供了一种允许实变量总是被初始化的方法. initalize方法 当Ruby创建一个新对象时,它总是会寻找一个名为 initialize 的方法并执行它.因此,我们可以简单通过一个initialize方法向实变量中加