我对Java还很陌生,我想知道这实际上意味着什么:
List<Integer> list = new ArrayList<Integer>(); //Example 1
为了区别于其他问题,我阅读了关于多态性以及示例1和示例2之间的区别的帖子,并且我理解示例1允许“编程到接口”。我还理解,通过示例1,可以很容易地将list更改为LinkedList,而不会影响代码的其余部分。
ArrayList<Integer> list = new ArrayList<Integer>(); //Example 2
但我想知道的是,例1实际上是什么意思。它会创建一个新列表吗?还是创建了一个新的ArrayList?结果对象是否具有列表的属性?或者结果对象是否具有ArrayList的属性?我能实现ArrayList在list上使用的方法而没有编译错误吗?
在两个示例中,只有表达式new
创建对象的实例(=
的右手边),左手边只定义一个指向您创建的对象的变量。
在这两种情况下,您创建的对象都是arraylist
类型。
list
是接口,而不是类,接口本身不能实例化。但是ArrayList
实现了List
接口,因此可以将ArrayList
的实例赋给List
类型的变量。
您的问题:
但我想知道的是,例1实际上是什么意思。它会创建一个新列表吗?还是创建了一个新的ArrayList?
它将创建一个新的ArrayList
。
但是,如果以后需要,您可以使用类型转换来访问ArrayList
中的方法,如下所示(但没有什么理由,因为ArrayList除了List中的内容之外没有其他内容)
List<Integer> list = new ArrayList<Integer>(); //Example 1
ArrayList<Integer> arrayList = (ArrayList<Integer>) list; // type-cast
问题内容: 在java int,float等中,是原始类型。如果我们需要将其与泛型一起使用,则使用包装器类。但是,以下声明在Java中仍然有效, 即使它是原始类型,如何调用? 问题答案: 原始对象成为对象 对于基元,在相应的包装器类中有一些名为TYPE的常量的Class对象可用-即,int.class更改为java.lang.Integer.TYPE。对于其他类型,编译器在正在编译的类中创建一个私
问题内容: 我目前正在(恢复)使用EJB的速度,而当我离开时,它发生了巨大的变化(到目前为止更好)。但是,我遇到了一个我正在苦苦挣扎的概念,并且想更好地理解它,因为它似乎在我们的代码中使用了(我工作的地方,而不是我和我所有的声音)。 这是我在一本书中找到的示例。这是显示如何使用注释的示例的一部分: 的类是一个相当简单的类来定义对:和。 哦,我从Rubinger&Burke的O’Reilly的Ent
问题内容: 什么是POSIX?我已阅读Wikipedia文章,并且每次遇到该术语时都会阅读。事实是我从来没有真正了解过它是什么。 有人可以通过解释“ POSIX的需求”来向我解释吗? 问题答案: POSIX是IEEE指定的一系列标准,用于阐明和统一Unix- y操作系统提供的应用程序编程接口(以及附属问题,例如命令行外壳实用程序)。当您编写依赖于POSIX标准的程序时,可以肯定地将它们轻松移植到大
本文向大家介绍NULL是什么意思?相关面试题,主要包含被问及NULL是什么意思?时的应答技巧和注意事项,需要的朋友参考一下 NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。 对NULL这个值的任何比较都会生产一个NULL值。 您不能把任何值与一个 NULL值进行比较,并在逻辑上希望获得一个答案。 使用IS NULL来进行NULL判断
问题内容: 我是接口的新手,并尝试通过github执行SOAP请求 我不明白 在此代码中: 我已经观察到相同的语法 但不知道通过什么实现 问题答案: 您可以参考文章“ 如何在Go中使用接口 ”(基于“ Russ Cox对接口的描述 ”): 什么 是 接口? 接口是两件事: 这是一组方法, 但这也是一种 该 类型的 空接口 是没有方法的接口。 由于没有Implements关键字,所有类型都至少实现了
问题内容: 我在Java中有很长的比较需要做,我想知道其中是否有一个或多个是正确的。比较字符串很长且难以阅读,因此为了便于阅读,我对其进行了分解,并自动使用快捷方式运算符而不是。 如果任何默认 值为负,我希望是真实的。这有效吗?会满足我的期望吗?我在Sun的网站或stackoverflow上看不到它,但是Eclipse似乎没有问题,并且代码可以编译并运行。 同样,如果我想执行多个逻辑交集,是否可以