首页 / JAVA / 在子类java中更改类变量类型
在子类java中更改类变量类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在子类java中更改类变量类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1410字,纯文字阅读大概需要3分钟。
内容图文
我有一个名为“模块”的课程
public abstract class Module {
protected Map<String, Port> ports;
...
public Map<String, Port> getPorts() {
return ports;
}
}
以及一个名为Design的类,它是Module的子类
public class Design extends Module{
...
//want to do this but doesn't compile
@override
public Map<String, Port> getPorts() {
return (Map<String, TopPort>) 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<String, TopPort> getTopPorts() {
return (Map<String, TopPort>) 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<String, TopPort>) this.ports;
为什么类型转换不能在整个地图上工作,即使它适用于每个成员?
解决方法:
你需要让你的类通用.
public abstract class Module<P extends Port> {
protected Map<String, P> ports;
public Map<String, P> getPorts() {
return ports;
}
}
class Design extends Module<TopPort> { }
不过,我不确定这是不是太过分了.
内容总结
以上是互联网集市为您收集整理的在子类java中更改类变量类型全部内容,希望文章能够帮你解决在子类java中更改类变量类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。