【问题标题】:Java - ArrayList<> and LinkedList<> - class as an identifierJava - ArrayList<> 和 LinkedList<> - 类作为标识符
【发布时间】:2017-11-15 08:04:32
【问题描述】:

https://imgur.com/nb6sjuK

我不明白这个例子中标识符的作用,我是编程新手,我意识到ArrayList&lt;String&gt; 创建字符串列表,与LinkedList&lt;String&gt; 相同,但是当你推送一个标识符中的类,例如 - LinkedList&lt;Song&gt; - 和 Song 是一个类。提前致谢。

public class Main {
    private static ArrayList<Album> albums = new ArrayList<Album>();

    LinkedList<Song> playlist = new LinkedList<Song>();

    public static void main(String[] args) {


    // write your code here

        Album album = new Album("StormBringer" , "Deep Purple");
        album.addSong("Stormbringer" , 4.6);
        album.addSong("Love don't mean a thing" , 4.22);

【问题讨论】:

  • String 是一个类似于 Song 的类
  • 请将您的代码示例添加为文本而不是图像。这样更容易阅读。
  • 我已经添加了一些代码,所以 String 是一个类似于 Song 的类,可以说 ArrayList 意味着我创建了一个 Song 类的对象列表?

标签: java arraylist linked-list declaration


【解决方案1】:

String 是一个类,Song 也是一个类。这意味着您只能将此类的对象插入您的List。不允许添加其他类的对象,因为类型不匹配。尝试这样做会导致编译错误。所以你的列表是类型保存。此功能称为generics

【讨论】:

    【解决方案2】:

    但是当您在identifier 中推送class 时会发生什么?

    首先它不是一个标识符,它是一个Type,这就是Generics的工作方式,你在&lt;&gt;之间传递一个Type,所以编译器知道这个通用类的预期Type(这里是集合)。集合 ListSet... 是 Generics 实现的好例子。

    就像Song 是一个类String 也是java.lang 包中的一个预定义 类,所以当你将一个类传递给你的集合时,编译器会期望这个集合中的所有元素都属于这个Type

    例如在您的代码中:

    LinkedList<Song> playlist = new LinkedList<Song>();
    

    所有playlist 项目都应该是Song 类的实例。

    【讨论】:

    • 非常感谢,现在有意义了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2013-08-26
    • 2015-04-09
    • 2021-05-09
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    相关资源
    最近更新 更多