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

使用泛型实例化AbstractMiniMap报错的问题求助

问题原因及解决办法

核心问题:抽象类无法直接实例化

Java中抽象类(用abstract修饰的类)不能直接通过new关键字创建实例,这是语言层面的硬性规则,和构造器无关。你的AbstractMiniMap是抽象类,所以new AbstractMiniMap<>(20,30)这种写法本身就不合法,强制转成Object也解决不了这个本质问题。

额外问题:构造器不匹配

你提供的AbstractMiniMap只有空参构造器,但你在main里调用的是带两个参数的构造器new AbstractMiniMap<>(20,30)——就算不是抽象类,这里也会报「构造器不存在」的错误。

解决步骤

  1. 创建AbstractMiniMap的具体子类:
    public class ConcreteMiniMap<K, V> extends AbstractMiniMap<K, V> {
        // 实现抽象类中所有未实现的抽象方法
        // 比如AbstractMiniMap定义的put、get等抽象方法,需要在这里完成具体逻辑
    }
    
  2. 实例化子类对象:
    public static void main(String[] args) {
        // 用子类实例化,向上转型为抽象类类型
        AbstractMiniMap<Double, Double> asd = new ConcreteMiniMap<>();
    }
    
  3. 补充带参构造器(如果需要):
    要是必须用(20,30)这类参数初始化,得先在AbstractMiniMap中添加对应构造器:
    // 在AbstractMiniMap中新增带参构造器
    public AbstractMiniMap(double initKey, double initVal) {
        this();
        // 可在这里把传入的初始键值对存入map
        // 比如调用已实现的put方法(如果有的话)
    }
    
    之后在子类中继承或重写该构造器,就能用带参方式实例化子类对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:40:18