java - Java中的继承和泛型
问题描述
所以我正在做一个项目,我有一些关于继承的问题。我有两个类,名为 Attribute 和 NumericalAttribute。第一个:
public class Attribute {
Attribute() {}
Attribute(String type) {}
}
(这应该是抽象的,但我需要实例化它所以它不能)
另一个:
public class NumericalAttribute extends Attribute {
double value;
NumericalAttribute(String value) { this.value = Double.parseDouble(value); }
public double getAtr(Attribute atr) { return this.value; }
}
我有多个 Attribute 子级,每个子级都具有相同的结构,但代表另一种类型(字符串、整数、布尔值)。问题是我需要某种方法来返回“值”变量(我在 NumericalAttribute 中确实有)但是对于属性类。但是我不能在 Attribute 中创建方法,因为每个儿子都会有不同类型的返回。那么有什么办法可以让我通过Attribute获取“value”变量呢?非常感谢!
public static Atributo transformAtributo(String tipo, String valor) {
Atributo atr = new Atributo();
if (tipo.equals("bool")) atr = new AtributoBoolean(valor);
else if (tipo.equals("string")) atr = new AtributoCategorico(valor);
else if (tipo.equals("num")) atr = new AtributoNumerico(valor);
else if (tipo.equals("set")) atr = new AtributoCategoricoMultiple(valor);
else if (tipo.equals("fecha")) atr = null;
return atr;
}
解决方案
这就是您要查找的内容:
public abstract class Attribute<T> {
public abstract T getValue(Attribute attr);
}
public class NumericalAttribute extends Attribute<Double> {
double value;
@Override
public Double getValue(Attribute attr) {
return value;
}
}
public class TextAttribute extends Attribute<String> {
String value;
@Override
public String getValue(Attribute attr) {
return value;
}
}
Attribute<T>
是一个泛型类。返回类型在每个具体类上声明。
推荐阅读
- rest - 如何设计和记录非 REST Web API?
- excel - Excel 函数计算两个单元格的结果,具体取决于哪个单元格在另一个之前输入
- windows - ICACLS Setowner 仅对文件夹
- scala - sparkSession.sql 抛出 NullPointerException
- c# - 当视图模型上存在“标题”属性时,为什么 ASP.NET MVC 客户端验证失败?
- mqtt - 在节点红色仪表板和调试消息中显示正确值时出错
- javascript - 运行 JSX 预处理器并使用 ES6 语法
- react-native - undefined 不是对象(评估 'event.target.value.toLowerCase')
- ruby - 从打开的浏览器获取 URL
- excel - 如何在多个单元格中同时使用 SUM 和 VLOOKUP 公式?