使用泛型实例化AbstractMiniMap报错的问题求助
问题原因及解决办法
核心问题:抽象类无法直接实例化
Java中抽象类(用abstract修饰的类)不能直接通过new关键字创建实例,这是语言层面的硬性规则,和构造器无关。你的AbstractMiniMap是抽象类,所以new AbstractMiniMap<>(20,30)这种写法本身就不合法,强制转成Object也解决不了这个本质问题。
额外问题:构造器不匹配
你提供的AbstractMiniMap只有空参构造器,但你在main里调用的是带两个参数的构造器new AbstractMiniMap<>(20,30)——就算不是抽象类,这里也会报「构造器不存在」的错误。
解决步骤
- 创建
AbstractMiniMap的具体子类:public class ConcreteMiniMap<K, V> extends AbstractMiniMap<K, V> { // 实现抽象类中所有未实现的抽象方法 // 比如AbstractMiniMap定义的put、get等抽象方法,需要在这里完成具体逻辑 } - 实例化子类对象:
public static void main(String[] args) { // 用子类实例化,向上转型为抽象类类型 AbstractMiniMap<Double, Double> asd = new ConcreteMiniMap<>(); } - 补充带参构造器(如果需要):
要是必须用(20,30)这类参数初始化,得先在AbstractMiniMap中添加对应构造器:
之后在子类中继承或重写该构造器,就能用带参方式实例化子类对象。// 在AbstractMiniMap中新增带参构造器 public AbstractMiniMap(double initKey, double initVal) { this(); // 可在这里把传入的初始键值对存入map // 比如调用已实现的put方法(如果有的话) }
内容的提问来源于stack exchange,提问作者shwirms
相关产品推荐
相关产品推荐

