Java 添加/转换LinkedList<;超类>;到LinkedList<;子类>;
我有以下问题。在目录结构中,抽象类Java 添加/转换LinkedList<;超类>;到LinkedList<;子类>;,java,casting,linked-list,add,Java,Casting,Linked List,Add,我有以下问题。在目录结构中,抽象类FSElement由其子类directory和File扩展。 每个目录都有一个链接列表子目录,用于填充相应的子文件和目录。 在我的问题中,我只想用子目录填充链接列表子目录,但是.add()只允许添加FSElement 如何将此FSElement强制转换为目录,并将其添加到链接列表中?感谢您的帮助 public class Directory extends FSElement { // Fields private LinkedList<
FSElement
由其子类directory
和File
扩展。
每个目录
都有一个链接列表子目录
,用于填充相应的子文件和目录。
在我的问题中,我只想用子目录
填充链接列表子目录,但是.add()
只允许添加FSElement
如何将此FSElement
强制转换为目录
,并将其添加到链接列表中?感谢您的帮助
public class Directory extends FSElement {
// Fields
private LinkedList<FSElement> children;
public FileSystem fileSystem;
private LinkedList<Directory> subDirs;
[...]
public LinkedList<Directory> getSubDirectories(){
for(int i=0; i < children.size(); i++) {
if(children.get(i).isDirectory()) {
this.subDirs.add(children.get(i)); // ERROR occurs here
}
return this.subDirs;
}
}
}
公共类目录扩展了FSElement{
//田地
私人关系人子女;
公共文件系统;
私有链接列表子目录;
[...]
公共LinkedList getSubDirectories(){
对于(int i=0;i
答案在问题中:铸造。将children.get(i)
转换为目录。另外,将subDirs设置为局部变量:没有理由每次调用getSubDirectories()时该列表都会变得越来越大。每次调用都会返回一个新列表。使用List
作为返回类型,使用ArrayList作为实现:LinkedList速度慢,几乎不应该使用。this.subDirs.add((目录)children.get(i))