更改子类java中的类变量类型

我有一个名为“模块”的课程

public abstract class Module { protected Map ports; ... public Map getPorts() { return ports; } } 

以及一个名为Design的类,它是Module的子类

 public class Design extends Module{ ... //want to do this but doesn't compile @override public Map getPorts() { return (Map) ports; //TopPort is a subclass of Port } } 

基本上我想要做的只是将TopPorts添加到Design中,并且在从getPorts()函数返回时已经转换了类型。

我现在正在做的是在getPorts函数返回main之后将Ports转换为TopPorts,但这非常有问题,并且正在构建我的代码的人无法立即了解何时返回TopPort。

我也试过创建另一个函数而不是重写getPorts()

  //want to do this as well but doesn't compile public Map getTopPorts() { return (Map) ports; //TopPort is a subclass of Port } 

这样做的正确方法是什么?


更具体的问题

我一直在玩代码,我可以在我的“设计”类中添加它:

 public TopPort getTopPortByName(String porName) { return (TopPort) ports.get(porName); } public void addPort(TopPort port) { this.ports.put(port.getName(), port); } 

但是,每当我尝试进行此转换时,它都不起作用:

 return (Map) this.ports; 

为什么类型转换不能在整个地图上工作,即使它适用于每个成员?

你需要让你的类通用。

 public abstract class Module

{ protected Map ports; public Map getPorts() { return ports; } } class Design extends Module { }

不过,我不确定这是不是太过分了。