gpt4 book ai didi

Java 泛型,链表

转载 作者:行者123 更新时间:2023-12-04 05:44:31 28 4
gpt4 key购买 nike

我完成了泛型的学习,但并不容易。不过,我确实明白了。这是我的理解。我希望您纠正我的错误并回答几个问题:)。

public class LinkedList<T> {
//class definition
}
  • 这意味着 LinkedList<> 是一个接受类对象和接口(interface)的类。
  • public class LinkedList<T extends Object> {
    //class definition
    }
  • 这意味着 LinkedList<> 是一个将接受这些类的对象的类 仅限 扩展对象类。基本上,所有类(class)。在原始类型的情况下,T 将被 Object
  • 替换
    public class LinkedList<T extends Object & java.lang.Serializable> {
    //class definition
    }
  • 这意味着 LinkedList<> 是一个接受 对象的类。全部 那些实现 Serializable 接口(interface)的类。如果用户定义类的对象必须包含在列表中,则用户定义类必须实现可序列化。
  • public class LinkedList<T> implements Iterable<T> {
    //class definition
    }
  • 这意味着 LinkedList<> 类可以与基于集合的 for 循环一起使用。它必须重载 iterator() 方法并且应该有一个实现 Itarator<T> 的内部类。并重载 hasNext()、next() 和 remove()
  • 问题
    1. 请用简单的语言和例子来解释这个的意思,如果可能的话:
    公开课 BinaryTree<T extends Comparable<? super T>>什么代替了?
    2. 我想使用 writeObject() 方法将上面提到的 LinkedList<> 类写入文件。所以我将其声明为
    public class LinkedList<T extends Object> implements Serializable {
    //methods and data members
    private class Node implements Serializable { //inner class
    T object;
    Node next;
    }
    }

    内部类是否也必须实现 Serializable ?

    最佳答案

    关于您的前四点:

  • 应该包含 T 实例的列表(包括扩展 T 的类)。
  • 实际上与第一个相同,因为所有类都扩展了 Object .
  • 只能包含 Serializable 对象的列表(与 class LinkedList<T extends Serializable> { ... } 相同)
  • T 的可迭代列表,所以是的,它可以用于增强循环。

  • 值得注意的是,当我们说“只能包含指定类型的对象的列表”时,我们应该说“应该”而不是“可以”。除非你通过 Class<?>周围的对象,Java(运行时)不会检查传入的值实际上是否符合,只有编译器会,并且仅基于可见的静态类型,这可以手动更改(这会发出警告)。

    关于问题:
  • 它代表 BinaryTree包含 Comparable 的对象到与 T 相同类别的任何对象或其任何父类(super class)型(Object 是所有类的一个父类(super class)型,本质上是 T 扩展的所有类及其实现的所有接口(interface))。
  • 如果你想使用 writeObject 序列化对象,则该对象的所有非 transient (即您无法根据其他数据重建)实例字段都需要为 Serializable也可以,或 writeObject will ignore them .您的代码摘录不足以判断 Node需要Serializable与否,但它可能需要给出 List 的一般概念例子。
  • 关于Java 泛型,链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10852542/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com