Java泛型,链表
我学完了泛型,我觉得这并不容易。然而,我确实明白了。这就是我所理解的。我希望你纠正我的错误并回答几个问题:)Java泛型,链表,java,generics,serialization,singly-linked-list,Java,Generics,Serialization,Singly Linked List,我学完了泛型,我觉得这并不容易。然而,我确实明白了。这就是我所理解的。我希望你纠正我的错误并回答几个问题:) 公共类链接列表{ //类定义 } 这意味着LinkedList是一个接受类的对象和接口的类 public class LinkedList<T extends Object> { //class definition } 公共类链接列表{ //类定义 } 这意味着LinkedList是一个只接受扩展对象类的类的对象的类。基本上,所有的班级。如果是原始类型,T将被Obje
公共类链接列表{
//类定义
}
public class LinkedList<T extends Object> {
//class definition
}
公共类链接列表{
//类定义
}
public class LinkedList<T extends Object & java.lang.Serializable> {
//class definition
}
公共类链接列表{
//类定义
}
public class LinkedList<T> implements Iterable<T> {
//class definition
}
公共类LinkedList实现了Iterable{
//类定义
}
Itarator
的内部类,并重载hasNext()、next()和remove()问题
1.如有可能,请用简单的文字和示例解释此内容的含义:
public class
BinaryTree关于您的前四点:
应该包含T
实例的列表(包括扩展T
的类)
实际上与第一个相同,因为所有类都扩展了Object
只能包含可序列化对象的列表(与类链接列表{…}
相同)
一个可编辑的T
列表,因此可以在增强循环中使用
值得注意的是,当我们说“只能包含指定类型的对象的列表”时,我们应该说“应该”,而不是“可以”。除非您传递类
对象,否则Java(运行时)不会检查传入的值是否实际符合,只有编译器会检查,并且仅基于可视静态类型,该类型可能已被手动更改(这将发出警告)
关于问题:
它表示一个BinaryTree
,其中包含与T
相同类的任何对象或其任何超类型(object
是所有类的一个超类型,本质上是T
扩展的所有类及其实现的所有接口)具有可比性的对象
如果要使用writeObject
序列化对象,则该对象的所有非瞬态(即无法基于其他数据重建)实例字段也需要是可序列化的
,或者。您的代码提取不足以判断节点是否需要可序列化
,但它可能需要给出列表
示例的总体思路
根据Oracle指南:
注意-由于几个原因,强烈建议不要序列化内部类(即非静态成员类的嵌套类),包括本地类和匿名类。由于在非静态上下文中声明的内部类包含对封闭类实例的隐式非瞬态引用,因此序列化此类内部类实例也将导致其关联的外部类实例的序列化。javac(或其他JavaTM编译器)生成的用于实现内部类的合成字段依赖于实现,并且可能因编译器而异;这些字段中的差异可能会破坏兼容性,并导致默认serialVersionUID值发生冲突。分配给本地和匿名内部类的名称也依赖于实现,并且在编译器之间可能有所不同。由于内部类不能声明编译时常量字段以外的静态成员,因此它们不能使用serialPersistentFields机制来指定可序列化字段。最后,由于与外部实例关联的内部类没有零参数构造函数(此类内部类的构造函数隐式接受封闭实例作为前置参数),因此它们无法实现Externalizable。但是,上面列出的问题都不适用于静态成员类
,添加一些澄清:
T
代表任何参考类型;它可以是类、接口或数组,也可以是参数化类型。类和接口等之间没有区别
T扩展对象
与T
相同,因为每个引用类型都是对象
的子类型(是的,接口也是对象
的子类型)<代码>扩展对象
有点多余
T扩展对象&可序列化
要求T
既是对象
又是可序列化
的子类型。正如我们之前所说的,所有的东西都是<代码>对象< /代码>的子类型,现在您可以认为它与T
的擦除将是对象
,在第二种情况下,可序列化
;但此时您无需担心这一点).@FasihKhatib指示链接列表
是否具有类型为节点
的非静态字段。我计划添加一个非静态方法public void writeIt()
,该方法将创建一个ObjectOutputStream
,然后使用writeObject(此)
是,它将具有非静态的节点开始
指向列表的开始,节点结束
指向列表的结束。节点当前
指向当前节点。Th
public class LinkedList<T> implements Iterable<T> {
//class definition
}
public class LinkedList<T extends Object> implements Serializable {
//methods and data members
private class Node implements Serializable { //inner class
T object;
Node next;
}
}