You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无法将飞行类对象添加至Flyable类型ArrayList集合?

问题解决方案

错误原因分析

  • 第一个错误:flyingThings.add("myPlane")传入的是字符串字面量,而ArrayList<Flyable>只能接收实现了Flyable接口的对象,不是字符串。你混淆了变量名和字符串,直接传变量名即可,不需要加双引号。
  • 第二个错误:Flyable是抽象接口,Java中接口不能直接通过new关键字实例化,必须使用实现该接口的具体类(比如Plane、Hangglider、Bird)的实例对象。

修正后的代码

package labInterface;
import java.util.ArrayList;
public class App 
{
    /**
     * @param args
     */
    public static void main(String[] args)
    {
        Plane myPlane = new Plane(4, "Boing 747");
        System.out.printf("myPlane: %s%n", myPlane);

        Hangglider myHangglider = new Hangglider(true);
        System.out.printf("myHangglider: %s%n", myHangglider);

        Bird myBird = new Bird("Swallow");
        System.out.printf("myBird: %s%n", myBird);
        
        ArrayList<Flyable> flyingThings = new ArrayList<Flyable>();
        // 直接传入已创建的对象引用,无需加引号
        flyingThings.add(myPlane);
        flyingThings.add(myHangglider);
        flyingThings.add(myBird);
    }
}

额外注意事项

确保Plane、Hangglider、Bird三个类都正确实现了Flyable接口,即重写了接口中定义的所有抽象方法,示例如下:

public class Plane implements Flyable {
    // 类的成员变量和构造方法
    // 实现Flyable接口的抽象方法
    @Override
    public void fly() {
        // 自定义飞行逻辑实现
    }
}

内容的提问来源于stack exchange,提问作者HalfokayCS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 20:10:36