将接口存储在数组列表java中

use*_*384 6 java

我正在学习java。我正在尝试使用复合设计模式。我正在尝试使用以下逻辑。(别笑,我知道这是非常基本的:))

Item -> interface
Folder -> class
File -> class
Run Code Online (Sandbox Code Playgroud)

在文件夹类中,我可以创建一个Item的数组列表来存储文件信息吗?

ArrayList<Item> info = ArrayList<Item>();
Run Code Online (Sandbox Code Playgroud)

或者我应该使用文件夹Arraylist?

ArrayList<Folder> info = ArrayList<Folder>();
Run Code Online (Sandbox Code Playgroud)

我不知道接口是否可以存储真实数据,因为没有变量只有函数定义。

感谢您帮助新手:)

pol*_*nts 5

你可以两者都做(进行一些语法修正)

List<Item> info = new ArrayList<Item>();
Run Code Online (Sandbox Code Playgroud)

对于这条评论:

我不知道接口是否可以存储真实数据,因为没有变量只有函数定义。

接口不仅仅提供函数定义。最重要的是,他们定义了一个类型info,如上声明,是类型为 的对象的列表Item。这些对象肯定可以存储数据。

例如,请考虑以下情况:

interface Item { ... }
class Folder implements Item { ... }

Item it = new Folder();
Run Code Online (Sandbox Code Playgroud)

现在,it指的是 的一个实例Folder,它是一个Item