我正在开发一个项目,其中的要求之一是我们使用通用数据类型。(其他要求:抽象类、继承、保存/加载函数、聚合和组合)
我想我应该创建一个库来满足所有要求,但很难想出何时/何处使用通用数据类型的好主意,然后很明显,如果我有一个类称为 Media 和两个称为 Book 和 CD 的子类,书籍的长度为 int(pages),CD 的长度为 double(分钟和秒) )
我认为在媒体中制作此内容会有所帮助:
public abstract class Media<T>{
private T length;
//lots of other variables & methods here, took out for sake of cutting to the chase
public T getLength(){
return length;
}
public void setLength(T length){
this.length = length;
}
}
问题:
但现在的问题是,当它没有在 getLength 中收到类型时,它如何返回一个类型,因此不知道它是什么类型,除非以某种方式设置它?或者解决方案是让每个子类在构造函数中调用此函数一次来设置它?
我可以在子类 Book 和 CD 中以某种方式覆盖 private T length;
变量吗?只是为了设置它们的类型,以便 getLength 能够按其应有的方式运行,或者还有其他解决方案吗?
可以选择在其他地方使用通用数据类型,但我只是不知道在哪里合适,我的教授们甚至在满足要求时都挑剔,所以他们让我知道,如果他们不让我通过,他们就会让我失望。认为某些东西“使用不当”或“不是一个好例子”,即使“礼仪”不是必需的。
最佳答案
感谢 Andy Turner 提供的解决方案以及其他人的贡献,但他给出了有帮助的答案,如下:
我做了什么:
class Book extends Media{
...
}
class CD extends Media{
...
}
我应该添加的内容:
class Book extends Media<Integer>{
...
}
class CD extends Media<Double>{
...
}
关于java - 抽象基类的通用数据类型返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37413605/