实现arraylist的java接口
Posted
技术标签:
【中文标题】实现arraylist的java接口【英文标题】:Implement java interface to arraylist 【发布时间】:2021-09-01 20:04:29 【问题描述】:我正在编写一个代码,其中包含狗的名字ArrayList
。接口方法允许动物发出声音(例如"woof"
)。我有一个 for 循环,它遍历整个数组并确定动物是否说。我遇到的问题是obj.speak()
不工作。每当我运行它时,它会说找不到符号,但我很困惑,因为我已经把它放在那里了。我不知道如何解决这个问题,因为我在多个网站上寻找答案,但它们没有帮助。我假设 ArrayList
正在循环,因为我放了一个 for 循环来遍历整个事情。
public class Main
public static void main(String[] args)
ArrayList dogs= new ArrayList();
dogs.add(new Dog("Fred"));
dogs.add(new Dog("Wanda"));
for (Object e: dogs)
e.speak();
interface Speak
public void speak();
class Dog implements Speak
private String name;
public Dog(String name)
this.name = name;
public void speak()
System.out.println("Woof");
【问题讨论】:
相关(如果不重复):What is a raw type and why shouldn't we use it? 【参考方案1】:ArrayList 可以/应该采用类型
ArrayList<Dog> dogs= new ArrayList<>();
dogs.add(new Dog("Fred"));
dogs.add(new Dog("Wanda"));
for (Dog e: dogs)
e.speak();
【讨论】:
【参考方案2】:使用泛型类型,而不是原始类型。尽量使用最窄的类型(例如,Speak
而不是 Dog
,因为您只从该接口调用方法)。
List<Speak> dogs = new ArrayList<>();
dogs.add(new Dog("Fred"));
dogs.add(new Dog("Wanda"));
for (Speak e: dogs)
e.speak();
【讨论】:
以上是关于实现arraylist的java接口的主要内容,如果未能解决你的问题,请参考以下文章
Java中 List集合接口主要的实现类ArrayList的详解
Java容器之Collection与ArrayList一些理解及自己用代码实现ArrayList
Java集合框架 List接口实现类--ArrayList使用 & 删除小明
Java集合框架 List接口实现类--ArrayList源码分析